mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 13:18:25 +02:00
51 lines
2.1 KiB
Plaintext
51 lines
2.1 KiB
Plaintext
|
|
This is the Free Pascal interface to the GDBM library routines.
|
|
Essentially, this is a translation of the gdbm.h header files, with some
|
|
additional routines.
|
|
|
|
The headers translated without any problems, the only thing that should
|
|
be taken into account is that the
|
|
GDBM_SYNC constant (for open flags) has been renamed to GDMB_DOSYNC
|
|
because it conflicts with the gdbm_sync function.
|
|
|
|
Be careful: the TDatum.dptr data pointer which is allocated by the
|
|
gdbm routines should be freed by the C free() call, NOT with the
|
|
pascal FreeMem() call.
|
|
|
|
A solution for this is to use the 'cmem' unit, which replaces the standard
|
|
FPC memory manager with the C memory manager. In that case, freemem()
|
|
may be used to free the dptr field of the TDatum record.
|
|
|
|
On top of the plain C header translations, The GDBM routines have been
|
|
overloaded with routines that accept plain strings as key or data
|
|
parameters. This means the following routines have been added:
|
|
|
|
function gdbm_open(Const para1:string; para2:longint; para3:longint; para4:longint; para5:TGDBMErrorCallBack ):PGDBM_FILE;
|
|
function gdbm_store(para1:PGDBM_FILE; Const para2:string; Const para3:string; para4:longint):Boolean;
|
|
function gdbm_fetch(para1:PGDBM_FILE; Const para2:string):string;
|
|
function gdbm_delete(para1:PGDBM_FILE; Const para2:string):boolean;
|
|
procedure gdbm_firstkey(para1:PGDBM_FILE; var key :string);
|
|
function gdbm_nextkey(para1:PGDBM_FILE; Const para2:string):string;
|
|
function gdbm_exists(para1:PGDBM_FILE; Const para2:string):boolean;
|
|
|
|
They are just the C routines, but with the TDatum type (a record)
|
|
replaced by a string. The routines take automatically care of memory
|
|
deallocation.
|
|
|
|
Functions that returned an integer to indicate success or failure have been
|
|
replaced by functions that return a boolean.
|
|
|
|
Careful:
|
|
When using ansistrings, make sure the gdbm unit has been compiled
|
|
with the -Sh switch. The unit should work with both kinds of strings.
|
|
|
|
There are 2 test programs:
|
|
testgdbm tests the raw C header translation
|
|
testgdbm2 tests the String interface to the GDBM routines.
|
|
|
|
That's about it.
|
|
|
|
Enjoy!
|
|
|
|
Michael. (Michael.VanCanneyt@Wisa.be)
|