2
Copyright (c) 1999-2000 by Michael Van Canneyt, member of
3
the Free Pascal development team
5
gdbm database routines header translations.
7
See the file COPYING.FPC, included in this distribution,
8
for details about the copyright.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
**********************************************************************}
25
External_library='gdbm';
27
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
30
PSmallInt = ^SmallInt;
39
{ Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
40
can create the database. }
46
GDBM_DOSYNC = $20; // Was GDBM_SYNC, but conflicts with gdbm_sync !!
54
GDBM_COALESCEBLKS = 5;
57
GDBM_MALLOC_ERROR = 1;
58
GDBM_BLOCK_SIZE_ERROR = 2;
59
GDBM_FILE_OPEN_ERROR = 3;
60
GDBM_FILE_WRITE_ERROR = 4;
61
GDBM_FILE_SEEK_ERROR = 5;
62
GDBM_FILE_READ_ERROR = 6;
63
GDBM_BAD_MAGIC_NUMBER = 7;
64
GDBM_EMPTY_DATABASE = 8;
65
GDBM_CANT_BE_READER = 9;
66
GDBM_CANT_BE_WRITER = 10;
67
GDBM_READER_CANT_DELETE = 11;
68
GDBM_READER_CANT_STORE = 12;
69
GDBM_READER_CANT_REORGANIZE = 13;
70
GDBM_UNKNOWN_UPDATE = 14;
71
GDBM_ITEM_NOT_FOUND = 15;
72
GDBM_REORGANIZE_FAILED = 16;
73
GDBM_CANNOT_REPLACE = 17;
74
GDBM_ILLEGAL_DATA = 18;
75
GDBM_OPT_ALREADY_SET = 19;
76
GDBM_OPT_ILLEGAL = 29;
88
dummy : array[0..9] of longint;
90
PGDBM_FILE = ^TGDBM_FILE;
92
TGDBMErrorCallBack = Procedure;
97
gdbm_version : Pchar;cvar; external; {name 'gdbm_version' not accepted ??}
99
function gdbm_open(para1:Pchar; para2:longint; para3:longint; para4:longint; para5:TGDBMErrorCallBack ):PGDBM_FILE;cdecl;external External_library name 'gdbm_open';
100
procedure gdbm_close(para1:PGDBM_FILE);cdecl;external External_library name 'gdbm_close';
101
function gdbm_store(para1:PGDBM_FILE; para2:TDatum; para3:TDatum; para4:longint):longint;cdecl;external External_library name 'gdbm_store';
102
function gdbm_fetch(para1:PGDBM_FILE; para2:TDatum):TDatum;cdecl;external External_library name 'gdbm_fetch';
103
function gdbm_delete(para1:PGDBM_FILE; para2:TDatum):longint;cdecl;external External_library name 'gdbm_delete';
104
function gdbm_firstkey(para1:PGDBM_FILE):TDatum;cdecl;external External_library name 'gdbm_firstkey';
105
function gdbm_nextkey(para1:PGDBM_FILE; para2:TDatum):TDatum;cdecl;external External_library name 'gdbm_nextkey';
106
function gdbm_reorganize(para1:PGDBM_FILE):longint;cdecl;external External_library name 'gdbm_reorganize';
107
procedure gdbm_sync(para1:PGDBM_FILE);cdecl;external External_library name 'gdbm_sync';
108
function gdbm_exists(para1:PGDBM_FILE; para2:TDatum):longint;cdecl;external External_library name 'gdbm_exists';
109
function gdbm_setopt(para1:PGDBM_FILE; para2:longint; para3:Plongint; para4:longint):longint;cdecl;external External_library name 'gdbm_setopt';
110
function gdbm_fdesc(para1:PGDBM_FILE):longint;cdecl;external External_library name 'gdbm_fdesc';
112
{ Easy Pascal access routines }
114
function gdbm_open(Const para1:string; para2:longint; para3:longint; para4:longint; para5:TGDBMErrorCallBack ):PGDBM_FILE;
115
function gdbm_store(para1:PGDBM_FILE; Const para2:string; Const para3:string; para4:longint):Boolean;
116
function gdbm_fetch(para1:PGDBM_FILE; Const para2:string):string;
117
function gdbm_delete(para1:PGDBM_FILE; Const para2:string):boolean;
118
procedure gdbm_firstkey(para1:PGDBM_FILE; var key :string);
119
function gdbm_nextkey(para1:PGDBM_FILE; Const para2:string):string;
120
function gdbm_exists(para1:PGDBM_FILE; Const para2:string):boolean;
124
gdbm_error = longint;
126
gdbm_errno : gdbm_error;cvar;external{ 'gdbm_errno'};
128
function gdbm_strerror(para1:gdbm_error):Pchar;cdecl;external External_library name 'gdbm_strerror';
132
function gdbm_open(Const para1:string; para2:longint; para3:longint; para4:longint; para5:TGDBMErrorCallBack ):PGDBM_FILE;
135
gdbm_open:=gdbm_open(@para1[1],para2,para3,para4,para5);
138
procedure cfree (P : pointer);cdecl; external 'c' name 'free';
140
Function DatumToString(Key : TDatum) : String;
143
SetLength(DatumToString,Key.dsize);
145
Move(key.dptr^,DatumToString[1],key.dsize);
146
if key.dptr<>Nil then
150
Function StringToDatum(Value : String) : TDatum;
153
StringToDatum.dptr:=@Value[1];
154
StringToDatum.dsize:=Length(Value);
158
function gdbm_store(para1:PGDBM_FILE; Const para2:string; Const para3:string; para4:longint):Boolean;
164
Data:=StringToDatum(Para3);
165
Key:=StringToDatum(Para2);
166
gdbm_store:=gdbm_store(para1,key,data,para4)=0;
169
function gdbm_fetch(para1:PGDBM_FILE; Const para2:string):string;
172
gdbm_fetch:=DatumToString(gdbm_fetch(para1,StringToDatum(Para2)));
175
function gdbm_delete(para1:PGDBM_FILE; Const para2:string):boolean;
178
gdbm_delete:=gdbm_delete(Para1,StringToDatum(para2))=0;
181
Procedure gdbm_firstkey(para1:PGDBM_FILE; var key : String);
184
Key:=DatumToString(gdbm_firstkey(para1));
187
function gdbm_nextkey(para1:PGDBM_FILE; Const Para2 :string):string;
190
gdbm_nextkey:=DatumToString(gdbm_nextkey(para1,StringToDatum(para2)));
193
function gdbm_exists(para1:PGDBM_FILE; const para2:string):boolean;
196
gdbm_exists:=gdbm_exists(para1,StringToDatum(para2))<>0;