Documentation code and object released under LGPL licence.
Copyright (C) 2005 by Henrique Abdalla <>
Website created with Website Template Control.

(plain HTML)
(powered by javascript)

Structured Integrated Database

The main goal of this project is to create a simple and intuitive database that works like a linked list and considers 'data' without a datatype restriction, that means in most cases, fully translatable.

The major feature is the simple structured database access thru a simple command ex.:
    the code
    will return the name of the first human on the list of humans,
    that live on the first coutry on the list of countries,
    of the first planet on the list of planets,
    of the first continent on the list of continents,
    of the first universe 'on the list of parallel universes' :),
    that are contained in the Linked List manager 'pData'.

This database is very simple, it has no tables (despite they can be simulated), neither a complex language to access its facilities.

It looks like a Linked List of objects where each object is also a linked list manager.
Each object has:
    StringID (short name descriptor),
    data (string, number, data pointer or generic pointer 'void*'),
    a set of properties and
    a linked list manager.

About 'properties', a good example is this:
'0x87efb98'H   L     'TimesRun'10'{
   '0x87f2e78'    L     'SizeLimit'2',
   '0x8802c20'    L     '2005.07.07-20:01:25.504922'9',
   '0x8849c50'    L     '2005.07.07-20:04:22.955242'10'
These are lines from saved database script file sample.
The 'TimesRun' data object wich has the 'History' property set (That 'H' just after the numeric hexa ID), means that each changes to data will create a new history entry within the limit of last entries to be kept, and the String ID of each entry is the datetime of the data change.

Full database data is saved on simple text files at '$HOME/.StructIntegrDB/ProgramName/*.txt', so you can manually edit (beware on this), read and recover data.

Source code example:
cout << pData->Get_pD("TimesRun")->DataGet_i() << "\n";
cout << pData->Get_pD("TimesRun/SizeLimit")->DataGet_i() << "\n";
will output: