The Future Lab Bbuuzzb database engine is constructed consisting of two levels which I call low and high level. Throughout the Bbuuzzb documentation, you will see references to the low level or high level.
The database code has been constructed like this so that the developer can use one code set for both single user and client/server applications. All that is required is to link with the proper modules.
Functions on the low level have names that start with:
dbeng_
Modules and functions at the low level use a pointer to dbeng_table to access a database table. Functions at this level should only be called by other low level functions.
The entire dbeng_table link list is contained in the module dbeng.c which is regarded as the engine. This data structure is not and should not be visible outside dbeng.c.
Functions on the high level have names that start with:
db_
Modules and functions at the high level use a tid (table ID) to access a database table. Using a table ID gives us a unique instance of a file pointer, file pointer position and all other members of the dbeng_table structure.
There are two versions of each high level database API. One for single user applications and one for client/server applications. At link time, the specific module is included.