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), Haiku. Both 32 and 64 bits platform supported. (Android porting will be available soon).
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.




Copyright DynaDream - 2011