Jump to content

Ultimate++

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Primefac (talk | contribs) at 00:47, 21 October 2016 (External links: rmv/replace template being deleted using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Ultimate++
Developer(s)Ultimate++ team [1]
Initial release2004; 20 years ago (2004)
Stable release
2015.2 (rev. 9251) / December 1, 2015;
8 years ago
 (2015-12-01)
Repository
Written inC++
Operating systemUnix/Linux/FreeBSD (X11), Windows, Windows CE
TypeApplication framework
LicenseBSD license
Websiteultimatepp.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 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. ^ "Ultimate++ team".
  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. ^ Gouvernelle, Vincent (2009). C++: L'essentiel du code et des commandes. Pearson Education France. ISBN 2-7440-2281-0.
  5. ^ Getting started with Ultimate++ CodeProject article
  6. ^ U++ Overview
  7. ^ Chameleon examples
  8. ^ Guide to Ultimate++ containers
  9. ^ Pick transfer semantics