Ultimate++

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

Ultimate++
Developer(s) Ultimate++ team [1]
Initial release 2004; 20 years ago (2004)
Stable release 2015.2 (rev. 9251) / December 1, 2015;
8 years ago
 (2015-12-01)
Development status Active
Written in C++
Operating system Unix/Linux/FreeBSD (X11), Windows, Windows CE
Type Application framework
License BSD license
Website ultimatepp.org

Ultimate++ [2][3][4][5] is a C++ cross-platform development framework which aims to reduce the code complexity of typical desktop applications by extensively exploiting C++ features.

Features

Hello World

The following example creates a U++ application with "Hello world!" button:

#include <CtrlLib/CtrlLib.h>

using namespace Upp;

class MyApp : public TopWindow {
    typedef MyApp CLASSNAME;

public:
    MyApp() {
        Title("Hello world");
        button.SetLabel("Hello world!");
        button.WhenAction = THISBACK(Click);
        Add(button.HSizePos(100, 100).VSizePos(100, 100));
    }
    
private:
    void Click() {
        if(PromptYesNo("Button was clicked. Do you want to quit?"))
            Break();
    }

    Button button;
};

GUI_APP_MAIN
{
    MyApp().Run();
}

Criticism

  • it doesn't use the Standard Template Library (STL)
  • NTL template system semantics are difficult to understand at first since assignment operator in reality gets overloaded to perform a move [9] operation and not a copy. This is done for performance reasons and to overcome some STL limitations, but new C++0x standard should enable even STL users to perform move operations with classes by introducing rvalue-references.
  • since many C++ operators are overloaded to perform common tasks such as assigning callbacks, understanding the code can be a difficult at first
  • there are no layouts handlers for widgets, although Ultimate++ has a system of logic coordinates to maintain relative coordinates of objects when resizing windows. Having three buttons properly aligned and resized on a row without layout managers still remains difficult, though.
  • Ultimate++ IDE support for languages other than C++ is very limited. It provides some syntax coloring for SQL and little else.

Software built on Ultimate++

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. http://www.programmez.com/magazine_articles.php?id_article=981 Programmez! issue 104
  3. http://www.programmez.com/magazine_articles.php?id_article=1150 Programmez! issue 114
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Getting started with Ultimate++ CodeProject article
  6. U++ Overview
  7. Chameleon examples
  8. Guide to Ultimate++ containers
  9. Pick transfer semantics

External links

  • No URL found. Please specify a URL here or add one to Wikidata.