Documentation code and object
released under LGPL
licence.
Copyright (C) 2005 by Henrique Abdalla <teike@users.sourceforge.net>
Website created with Website
Template Control.
Menu
(plain HTML)
|
Menu
(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
pData ->Get_pD("Universe/Planet/Continent/Country/Human/Name")->DataGet_str();
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:
NumericID,
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:
10
2