Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
UppHub
Status & Roadmap
FAQ
Authors & License
Forums
Funding U++
Search on this site











SourceForge.net Logo

SourceForge.net Logo

GitHub Logo

Discord Logo

U++ Technologies

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 a 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 help you better understanding the architecture of U++.


Table of contents

 

1. Organization

2. Components responsibilities

   2.1 Development tools

   2.2 U++ framework

       2.2.1 Core libraries

       2.2.2 Graphics libraries

       2.2.3 GUI libraries

       2.2.4 UI controls

       2.2.5 Data base libraries

       2.2.6 Web development

 


1. Organization

Below diagram presents the most important technologies that belongs to the U++ framework.

 

 


2. Components responsibilities

2.1 Development tools

To work efficiency with U++, you need to use its 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 an application in other languages such as Java, Python etc.. It can act 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.

2.2 U++ framework

U++ framework should be understood by collection of C++ supportive libraries. In this case we can distinguish four main areas. They will be discussed in the next parts of this paragraph.

2.2.1 Core libraries

Core libraries provide low level abstraction.

Core - the heart of the U++ framework.

NTL (Non-standard Template Library) - containers library.

SSL - adds security layer to the library. It should be used when you want to provide secure connection for your sockets or HTTP requests.

RPC - support for remote procedure call.

SMTP - adds the possibility to communicate with mail server with SMTP protocol.

POP3 - just as before, only in this case the POP3 protocol is used.

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 the project.

PNG - adds support for PNG graphics format.

JPG - similar like the previous one expect that it concerns JPEG.

PCRE - regular expression support.

Z - adds support for ZIP format. It is used to compress/decompress files.

Esc - scripting language. It is mainly used for scripting TheIDE, but it can be easily embedded in any application.

2.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.

2.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.

2.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 simplified list of packages that deliver controls:

CtrlLib - set of standard UI controls like edit fields, buttons, list etc.

GLCtrl - 3D graphics control that interacts with OpenGL API.

TabBar -

more... -

2.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 the following components:

SQL - provides abstract layer that generalize access to database.

MySQL - adds support for MySQL database engine.

Plugins:

SQLITE3 - adds support for SQLite database engine. This type of database doesn't require connection to special server. All content is stored on hard drive as a regular file. More information about this technology can be found on official manufacture site.

2.2.6 Web development

U++ allows creating 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 creating 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++.

Turtle - tiny JavaScript and HTML5 client that allows to run GUI application directly in the browse. Example of usage of that technology can be found on this site.

Do you want to contribute?