DynaLib - Multiplatform SDK
This is a tech demo showing a graphical user interface system that is part of a large multiplatforms development kit called dynalib. The system is totally platform independant and has no source or binary dependecies. See below.
Features
Many features are included in it like:
- Multi platform system, runs natively on many platforms.
- Clean C based Object Oriented Programming system
- Template-like containers (2 line of codes to make your own storage type (e.g. array) container, see below)
- Arrays
- Maps
- Hashes
- Sets
- Lists
- Stacks
- Deques
- Queues
- Signals/slots system
- Reference counted memory management
- Object's reflection-introspection
- Dynamic/Static properties
- A framework that allow the creation of simple projects or more complex and GUI rich 3d applications
- 2d/3d scenegraph management
- Soft and rigid body dynamics
- Skinnable/temable graphical user interface (Make your own GUI by adding theme classes) even on a widget level (And as a plugin, sharable on different applications)
- Simple and powerful Model/View based GUI
- OpenGL native support. Graphics drivers porting for the GUI is straightforward (The OpenGL native works almost everywhere)
- Advanced math library (Native vector/matrix-dense-sparse operations as well as LAPACK, BLAS and thus CUDA and OpenCL binding)
- A general-multiplatform plugin system that work on different applications (Plugins can be shared)
- Consistent database engine allow to share objects between different applications
- A custom build system (Like cmake, scons etc...), just run dlmake on your platform and do a classic make, no code changes or platform conditions, just code it and compile everywhere.
- More and more!
It feature also very small and fast executables, for real (See the demo).
Actually it run on all major Linux/Unix distributions as well as Windows, Mac OSX, iOS (iPhone, iPod, iPad), Android, Haiku. Both 32 and 64 bits platform supported.
The SDK is developed in C and feature a simple and clean object oriented system that support class inheritance and functions overloading. Unlike other C libraries, dynalib is clean and have a real compact API. Below a little example:
/* * Managing array of integers - dynalib version. * dynalib's objects need to be allocated on the heap * Note that garbage collection can be used * to allow automatic objects destruction. */
dlInt value0 = 10, value1 = 12, i;
dlIntArray *intarray = dlNew(dlIntArray);
dlCall_(intarray, pushBack), &value0 _end; dlCall_(intarray, pushBack), &value1 _end;
for(i=0;i<dlCall_(intarray, getSize) _end;i++) { dlInt *value = dlCall_(intarray, getAt), i _end;
printf("Value: %d\n", *value); }
dlDel(intarray);
/* * Managing array of integers - C++ STL version (Dynamic allocation). * In C++ objects can be allocated on the stack (Allowing automatic destruction), * but to make things clear the sample uses dynamic allocation to show the little * difference between the two system. */
std::vector<int> *intarray = new std::vector<int>;
intarray->push_back(10); intarray->push_back(12);
for(int i=0;i<intarray->size();i++) { printf("Value: %d\n", intarray->at(i)); }
delete intarray; |
Like modern language, e.g. C++, dynalib's main feature is it's ability to base the entire system on a few keywords that act seamless for every OO (Object Oriented) object.
Downloads
A demo for the various platforms can be dowloaded below:
- Windows (2000, XP, Vista, 7)
How to run the demo
You need to extract the content of the compressed file to a directory of your choice. To execute the demo:
Windows: Just double click on the executable file.
Linux: From a shell digit ./dldemo.
Mac OSX: From a shell digit ./run.
dynalib is used in DynAtomic and in the casual commercial game uFall.
For more information please contact us.