DynaLib - Multiplatform SDK

 

This is a tech demo showing a graphical user interface system that is part of a large multiplatforms development kit called dynalibThe 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), AndroidHaiku. 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)

 

- Linux (32 Bit)

 

- Linux (64 Bit)

 

- Max OSX 10.6.x (64 Bit)

 

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.

Site Map