What is U++? We strongly believe that the answer for that question is not so obvious. The whole U++ cannot be treated as C++ framework - it is rather a collection of technologies. This article is intended to show you all major U++ components. Emphasis is put on the organization and responsibilities of each technology.
We knew that for some readers may be a surprise that library intended to be a GUI library has got own web development framework. This information is probably never mentioned on the third party sources. So, this is definitely a good moment to correct several things.
If you are just starting your journey with U++, this place is for certain what you are looking for, It can helps you better understanding the architecture of U++.
Below diagram presents the most important technologies that belongs to the U++ framework.
3. Components responsibilities
3.1 Development tools
To work efficiency with U++, you need to use it's development tools, which includes:
TheIDE - Integrated development environment general purpose. It is mainly used by C++ developers and U++ users. But, it can be easily used to develop application in other languages such as Java, Python etc.. It can acts as a text editor as well.
UMK (UltimateMaKe) - console utility that allows building TheIDE project standalone. It can be used to work with U++ project from other IDEs or even creating your own project using only terminal. However, TheIDE can be required to create icons set or layouts.
3.2 U++ framework
U++ framework should be understand by collection of C++ supportive libraries. In this case we can distinguished four main areas. They will be discussed in the next parts of this paragraph.
3.2.1 Core libraries
Core libraries provide low level abstraction.
Core - the heart of the U++ framework.
Plugins - useful additions to the library. They are mainly third party libraries that are wrapped by U++ framework. They are adapted to TheIDE build system, so all you need to do is just add it to project.
PNG - adds support for PNG graphics format.
JPG - similar like previous one expect that it concerns JPEG.
PCRE - regular expression support.
Z - adds support for ZIP format. It is used to compares/decompress files.
Esc - scripting language. It is mainly used for scripting TheIDE, but it can be easily embed in any application.
3.2.2 Graphics libraries
Libraries that are responsible for processing graphics. They can be used with or without GUI.
Draw - simply drawing library.
Painter - advanced drawing library.
3.2.3 GUI libraries
All GUI related code is stored here.
CtrlCore - low level related code that wraps platform specific code. Thanks to that package it is possible to write UI code on all platforms supported by U++ without any modification in user code.
3.2.4 UI controls
Some packages deliver ready to use UI controls. Some times it is only one control, otherwise it is a collection of controls. Below is the simplify list of packages that deliver controls:
CtrlLib - set of standard UI controls like edit fields, buttons, list etc.
3.2.5 Data base libraries
One of the main goals of U++ library was to deliver easy to use access to the databases. In this area we can distinguish following components:
SQL - provides abstract layer that generalize access to database.
MySQL - adds support for MySQL database engine.
SQLITE3 - adds support for SQLite database engine. This type of database doesn't require connection to special server. All content is stored on hard drice as a regular file. More information about this technology can be found on official manufacture site.
3.2.6 Web development
U++ allows to create web application that works directly in your web browser. Currently, we support two following technologies
Skylark - web development framework dedicated C++ language. It mainly based on U++ core libraries such as Core. It allows to create web application that based on page generation concept. It means that it can handle all HTML requests and programmer write code that generates HTML page. In addition, Skylark works with all databases engines that are supported by U++.