/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- ScmGdbm
- gdbm_print
- Scm_Init_gdbm
- gdbm_finalize
- gdbm_gdbm_open
- gdbm_gdbm_close
- gdbm_gdbm_closedP
- gdbm_gdbm_store
- gdbm_gdbm_fetch
- gdbm_gdbm_delete
- gdbm_gdbm_firstkey
- gdbm_gdbm_nextkey
- gdbm_gdbm_reorganize
- gdbm_gdbm_sync
- gdbm_gdbm_existsP
- gdbm_gdbm_strerror
- gdbm_gdbm_setopt
- gdbm_gdbm_version
- gdbm_gdbm_errno
- Scm_Init_gdbm
1 /* Generated by genstub. Do not edit. */
2 #include <gauche.h>
3 #if defined(__CYGWIN__) || defined(__MINGW32__)
4 #define SCM_CGEN_CONST /*empty*/
5 #else
6 #define SCM_CGEN_CONST const
7 #endif
8
9 #include <gdbm.h>
10 #include <stdlib.h>
11 #include <gauche/extend.h>
12
13 SCM_CLASS_DECL(Scm_GdbmClass);
14 static void gdbm_print(ScmObj, ScmPort *, ScmWriteContext*);
15 SCM_DEFINE_BUILTIN_CLASS_SIMPLE(Scm_GdbmClass, gdbm_print);
16
17 #define SCM_CLASS_GDBM (&Scm_GdbmClass)
18 #define SCM_GDBM(obj) ((ScmGdbm*)obj)
19 #define SCM_GDBMP(obj) SCM_XTYPEP(obj, SCM_CLASS_GDBM)
20
21 typedef struct ScmGdbmRec {
22 SCM_HEADER;
23 ScmObj name;
24 GDBM_FILE dbf; /* NULL if closed */
25 } ScmGdbm;
26
27 static void gdbm_print(ScmObj obj, ScmPort *out, ScmWriteContext *ctx)
28 {
29 Scm_Printf(out, "#<gdbm-file %S>", SCM_GDBM(obj)->name);
30 }
31
32 #define TO_DATUM(datum_, scm_) \
33 do { \
34 const ScmStringBody *b = SCM_STRING_BODY(scm_);\
35 datum_.dptr = (char*)SCM_STRING_BODY_START(b); \
36 datum_.dsize = SCM_STRING_BODY_SIZE(b); \
37 } while (0)
38 #define FROM_DATUM(scm_, datum_) \
39 do { \
40 if (datum_.dptr) { \
41 scm_ = Scm_MakeString(datum_.dptr, datum_.dsize, -1, SCM_MAKSTR_COPYING); \
42 free(datum_.dptr); \
43 } else { \
44 scm_ = SCM_FALSE; \
45 } \
46 } while (0)
47
48 #define CHECK_GDBM(g) if (!g->dbf) Scm_Error("gdbm file already closed: %S", g)
49
50 /* Those symbols may not be defined in the older gdbm */
51 #ifndef GDBM_SYNC
52 #define GDBM_SYNC 0
53 #endif
54 #ifndef GDBM_NOLOCK
55 #define GDBM_NOLOCK 0
56 #endif
57 #ifndef GDBM_SYNCMODE
58 #define GDBM_SYNCMODE 0
59 #endif
60 #ifndef GDBM_CENTFREE
61 #define GDBM_CENTFREE 0
62 #endif
63 #ifndef GDBM_COALESCEBLKS
64 #define GDBM_COALESCEBLKS 0
65 #endif
66
67 /* Hack for initialization stub */
68 static void Scm_gdbm_internal_init(ScmModule*);
69 void Scm_Init_gdbm(void)
70 {
71 ScmModule *mod;
72 SCM_INIT_EXTENSION(gdbm);
73 mod = SCM_FIND_MODULE("dbm.gdbm", SCM_FIND_MODULE_CREATE);
74 Scm_InitStaticClass(&Scm_GdbmClass, "<gdbm-file>", mod, NULL, 0);
75 Scm_gdbm_internal_init(mod);
76 }
77 #define Scm_Init_gdbm Scm_gdbm_internal_init
78
79 static void gdbm_finalize(ScmObj obj, void *data)
80 {
81 ScmGdbm *g = SCM_GDBM(obj);
82 if (g->dbf) { gdbm_close(g->dbf); g->dbf = NULL; }
83 }
84
85 static ScmObj gdbm_gdbm_open(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
86 {
87 ScmObj name_scm;
88 ScmString* name;
89 ScmObj size_scm;
90 int size;
91 ScmObj rwmode_scm;
92 int rwmode;
93 ScmObj fmode_scm;
94 int fmode;
95 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
96 SCM_ENTER_SUBR("gdbm-open");
97 if (Scm_Length(SCM_OPTARGS) > 3)
98 Scm_Error("too many arguments: up to 3 is expected, %d given.", Scm_Length(SCM_OPTARGS));
99 name_scm = SCM_ARGREF(0);
100 if (!SCM_STRINGP(name_scm)) Scm_Error("string required, but got %S", name_scm);
101 name = SCM_STRING(name_scm);
102 if (SCM_NULLP(SCM_OPTARGS)) size_scm = Scm_MakeInteger(0);
103 else {
104 size_scm = SCM_CAR(SCM_OPTARGS);
105 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
106 }
107 if (!SCM_INTP(size_scm)) Scm_Error("small integer required, but got %S", size_scm);
108 size = SCM_INT_VALUE(size_scm);
109 if (SCM_NULLP(SCM_OPTARGS)) rwmode_scm = SCM_MAKE_INT(GDBM_READER);
110 else {
111 rwmode_scm = SCM_CAR(SCM_OPTARGS);
112 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
113 }
114 if (!SCM_INTP(rwmode_scm)) Scm_Error("small integer required, but got %S", rwmode_scm);
115 rwmode = SCM_INT_VALUE(rwmode_scm);
116 if (SCM_NULLP(SCM_OPTARGS)) fmode_scm = SCM_MAKE_INT(0666);
117 else {
118 fmode_scm = SCM_CAR(SCM_OPTARGS);
119 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
120 }
121 if (!SCM_INTP(fmode_scm)) Scm_Error("small integer required, but got %S", fmode_scm);
122 fmode = SCM_INT_VALUE(fmode_scm);
123 {
124 ScmGdbm *z = SCM_NEW(ScmGdbm);
125 SCM_SET_CLASS(z, SCM_CLASS_GDBM);
126 Scm_RegisterFinalizer(SCM_OBJ(z), gdbm_finalize, NULL);
127 z->name = SCM_OBJ(name);
128 z->dbf = gdbm_open(Scm_GetString(name), size, rwmode, fmode, NULL);
129 if (z->dbf == NULL) Scm_SysError("couldn't open gdbm file %S", name);
130 SCM_RETURN(SCM_OBJ(z));
131 }
132 }
133
134 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_open__NAME, "gdbm-open", 9, 9);
135 static SCM_DEFINE_SUBR(gdbm_gdbm_open__STUB, 1, 1, SCM_OBJ(&gdbm_gdbm_open__NAME), gdbm_gdbm_open, NULL, NULL);
136
137 static ScmObj gdbm_gdbm_close(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
138 {
139 ScmObj gdbm_scm;
140 ScmGdbm* gdbm;
141 SCM_ENTER_SUBR("gdbm-close");
142 gdbm_scm = SCM_ARGREF(0);
143 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
144 gdbm = SCM_GDBM(gdbm_scm);
145 {
146 CHECK_GDBM(gdbm);
147 if (gdbm->dbf) {
148 gdbm_close(gdbm->dbf);
149 gdbm->dbf = NULL;
150 }
151 SCM_RETURN(SCM_UNDEFINED);
152 }
153 }
154
155 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_close__NAME, "gdbm-close", 10, 10);
156 static SCM_DEFINE_SUBR(gdbm_gdbm_close__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_close__NAME), gdbm_gdbm_close, NULL, NULL);
157
158 static ScmObj gdbm_gdbm_closedP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
159 {
160 ScmObj gdbm_scm;
161 ScmGdbm* gdbm;
162 SCM_ENTER_SUBR("gdbm-closed?");
163 gdbm_scm = SCM_ARGREF(0);
164 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
165 gdbm = SCM_GDBM(gdbm_scm);
166 {
167 {
168 int SCM_RESULT;
169 SCM_RESULT = (gdbm->dbf == NULL);
170 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
171 }
172 }
173 }
174
175 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_closedP__NAME, "gdbm-closed?", 12, 12);
176 static SCM_DEFINE_SUBR(gdbm_gdbm_closedP__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_closedP__NAME), gdbm_gdbm_closedP, NULL, NULL);
177
178 static ScmObj gdbm_gdbm_store(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
179 {
180 ScmObj gdbm_scm;
181 ScmGdbm* gdbm;
182 ScmObj key_scm;
183 ScmString* key;
184 ScmObj val_scm;
185 ScmString* val;
186 ScmObj flags_scm;
187 int flags;
188 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
189 SCM_ENTER_SUBR("gdbm-store");
190 if (Scm_Length(SCM_OPTARGS) > 1)
191 Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS));
192 gdbm_scm = SCM_ARGREF(0);
193 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
194 gdbm = SCM_GDBM(gdbm_scm);
195 key_scm = SCM_ARGREF(1);
196 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
197 key = SCM_STRING(key_scm);
198 val_scm = SCM_ARGREF(2);
199 if (!SCM_STRINGP(val_scm)) Scm_Error("string required, but got %S", val_scm);
200 val = SCM_STRING(val_scm);
201 if (SCM_NULLP(SCM_OPTARGS)) flags_scm = Scm_MakeInteger(0);
202 else {
203 flags_scm = SCM_CAR(SCM_OPTARGS);
204 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
205 }
206 if (!SCM_INTP(flags_scm)) Scm_Error("small integer required, but got %S", flags_scm);
207 flags = SCM_INT_VALUE(flags_scm);
208 {
209 {
210 int SCM_RESULT;
211 datum dkey, dval;
212 CHECK_GDBM(gdbm);
213 TO_DATUM(dkey, key);
214 TO_DATUM(dval, val);
215 SCM_RESULT = gdbm_store(gdbm->dbf, dkey, dval, flags);
216 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
217 }
218 }
219 }
220
221 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_store__NAME, "gdbm-store", 10, 10);
222 static SCM_DEFINE_SUBR(gdbm_gdbm_store__STUB, 3, 1, SCM_OBJ(&gdbm_gdbm_store__NAME), gdbm_gdbm_store, NULL, NULL);
223
224 static ScmObj gdbm_gdbm_fetch(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
225 {
226 ScmObj gdbm_scm;
227 ScmGdbm* gdbm;
228 ScmObj key_scm;
229 ScmString* key;
230 SCM_ENTER_SUBR("gdbm-fetch");
231 gdbm_scm = SCM_ARGREF(0);
232 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
233 gdbm = SCM_GDBM(gdbm_scm);
234 key_scm = SCM_ARGREF(1);
235 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
236 key = SCM_STRING(key_scm);
237 {
238 {
239 ScmObj SCM_RESULT;
240 datum dkey, dval;
241 CHECK_GDBM(gdbm);
242 TO_DATUM(dkey, key);
243 dval = gdbm_fetch(gdbm->dbf, dkey);
244 FROM_DATUM(SCM_RESULT, dval);
245 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
246 }
247 }
248 }
249
250 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_fetch__NAME, "gdbm-fetch", 10, 10);
251 static SCM_DEFINE_SUBR(gdbm_gdbm_fetch__STUB, 2, 0, SCM_OBJ(&gdbm_gdbm_fetch__NAME), gdbm_gdbm_fetch, NULL, NULL);
252
253 static ScmObj gdbm_gdbm_delete(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
254 {
255 ScmObj gdbm_scm;
256 ScmGdbm* gdbm;
257 ScmObj key_scm;
258 ScmString* key;
259 SCM_ENTER_SUBR("gdbm-delete");
260 gdbm_scm = SCM_ARGREF(0);
261 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
262 gdbm = SCM_GDBM(gdbm_scm);
263 key_scm = SCM_ARGREF(1);
264 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
265 key = SCM_STRING(key_scm);
266 {
267 {
268 int SCM_RESULT;
269 datum dkey;
270 CHECK_GDBM(gdbm);
271 TO_DATUM(dkey, key);
272 SCM_RESULT = gdbm_delete(gdbm->dbf, dkey);
273 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
274 }
275 }
276 }
277
278 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_delete__NAME, "gdbm-delete", 11, 11);
279 static SCM_DEFINE_SUBR(gdbm_gdbm_delete__STUB, 2, 0, SCM_OBJ(&gdbm_gdbm_delete__NAME), gdbm_gdbm_delete, NULL, NULL);
280
281 static ScmObj gdbm_gdbm_firstkey(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
282 {
283 ScmObj gdbm_scm;
284 ScmGdbm* gdbm;
285 SCM_ENTER_SUBR("gdbm-firstkey");
286 gdbm_scm = SCM_ARGREF(0);
287 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
288 gdbm = SCM_GDBM(gdbm_scm);
289 {
290 {
291 ScmObj SCM_RESULT;
292 datum dkey = gdbm_firstkey(gdbm->dbf);
293 FROM_DATUM(SCM_RESULT, dkey);
294 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
295 }
296 }
297 }
298
299 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_firstkey__NAME, "gdbm-firstkey", 13, 13);
300 static SCM_DEFINE_SUBR(gdbm_gdbm_firstkey__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_firstkey__NAME), gdbm_gdbm_firstkey, NULL, NULL);
301
302 static ScmObj gdbm_gdbm_nextkey(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
303 {
304 ScmObj gdbm_scm;
305 ScmGdbm* gdbm;
306 ScmObj key_scm;
307 ScmString* key;
308 SCM_ENTER_SUBR("gdbm-nextkey");
309 gdbm_scm = SCM_ARGREF(0);
310 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
311 gdbm = SCM_GDBM(gdbm_scm);
312 key_scm = SCM_ARGREF(1);
313 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
314 key = SCM_STRING(key_scm);
315 {
316 {
317 ScmObj SCM_RESULT;
318 datum dkey, dnkey;
319 CHECK_GDBM(gdbm);
320 TO_DATUM(dkey, key);
321 dnkey = gdbm_nextkey(gdbm->dbf, dkey);
322 FROM_DATUM(SCM_RESULT, dnkey);
323 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
324 }
325 }
326 }
327
328 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_nextkey__NAME, "gdbm-nextkey", 12, 12);
329 static SCM_DEFINE_SUBR(gdbm_gdbm_nextkey__STUB, 2, 0, SCM_OBJ(&gdbm_gdbm_nextkey__NAME), gdbm_gdbm_nextkey, NULL, NULL);
330
331 static ScmObj gdbm_gdbm_reorganize(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
332 {
333 ScmObj gdbm_scm;
334 ScmGdbm* gdbm;
335 SCM_ENTER_SUBR("gdbm-reorganize");
336 gdbm_scm = SCM_ARGREF(0);
337 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
338 gdbm = SCM_GDBM(gdbm_scm);
339 {
340 {
341 int SCM_RESULT;
342 CHECK_GDBM(gdbm);
343 SCM_RESULT = gdbm_reorganize(gdbm->dbf);
344 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
345 }
346 }
347 }
348
349 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_reorganize__NAME, "gdbm-reorganize", 15, 15);
350 static SCM_DEFINE_SUBR(gdbm_gdbm_reorganize__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_reorganize__NAME), gdbm_gdbm_reorganize, NULL, NULL);
351
352 static ScmObj gdbm_gdbm_sync(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
353 {
354 ScmObj gdbm_scm;
355 ScmGdbm* gdbm;
356 SCM_ENTER_SUBR("gdbm-sync");
357 gdbm_scm = SCM_ARGREF(0);
358 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
359 gdbm = SCM_GDBM(gdbm_scm);
360 {
361 CHECK_GDBM(gdbm);
362 gdbm_sync(gdbm->dbf);
363 SCM_RETURN(SCM_UNDEFINED);
364 }
365 }
366
367 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_sync__NAME, "gdbm-sync", 9, 9);
368 static SCM_DEFINE_SUBR(gdbm_gdbm_sync__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_sync__NAME), gdbm_gdbm_sync, NULL, NULL);
369
370 static ScmObj gdbm_gdbm_existsP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
371 {
372 ScmObj gdbm_scm;
373 ScmGdbm* gdbm;
374 ScmObj key_scm;
375 ScmString* key;
376 SCM_ENTER_SUBR("gdbm-exists?");
377 gdbm_scm = SCM_ARGREF(0);
378 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
379 gdbm = SCM_GDBM(gdbm_scm);
380 key_scm = SCM_ARGREF(1);
381 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
382 key = SCM_STRING(key_scm);
383 {
384 {
385 int SCM_RESULT;
386 datum dkey;
387 CHECK_GDBM(gdbm);
388 TO_DATUM(dkey, key);
389 SCM_RESULT = gdbm_exists(gdbm->dbf, dkey);
390 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
391 }
392 }
393 }
394
395 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_existsP__NAME, "gdbm-exists?", 12, 12);
396 static SCM_DEFINE_SUBR(gdbm_gdbm_existsP__STUB, 2, 0, SCM_OBJ(&gdbm_gdbm_existsP__NAME), gdbm_gdbm_existsP, NULL, NULL);
397
398 static ScmObj gdbm_gdbm_strerror(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
399 {
400 ScmObj errno_scm;
401 int errno;
402 SCM_ENTER_SUBR("gdbm-strerror");
403 errno_scm = SCM_ARGREF(0);
404 if (!SCM_INTP(errno_scm)) Scm_Error("small integer required, but got %S", errno_scm);
405 errno = SCM_INT_VALUE(errno_scm);
406 {
407 {
408 ScmObj SCM_RESULT;
409 SCM_RESULT = (SCM_MAKE_STR_IMMUTABLE(gdbm_strerror(errno)));
410 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
411 }
412 }
413 }
414
415 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_strerror__NAME, "gdbm-strerror", 13, 13);
416 static SCM_DEFINE_SUBR(gdbm_gdbm_strerror__STUB, 1, 0, SCM_OBJ(&gdbm_gdbm_strerror__NAME), gdbm_gdbm_strerror, NULL, NULL);
417
418 static ScmObj gdbm_gdbm_setopt(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
419 {
420 ScmObj gdbm_scm;
421 ScmGdbm* gdbm;
422 ScmObj option_scm;
423 int option;
424 ScmObj val_scm;
425 ScmObj val;
426 SCM_ENTER_SUBR("gdbm-setopt");
427 gdbm_scm = SCM_ARGREF(0);
428 if (!SCM_GDBMP(gdbm_scm)) Scm_Error("<gdbm> required, but got %S", gdbm_scm);
429 gdbm = SCM_GDBM(gdbm_scm);
430 option_scm = SCM_ARGREF(1);
431 if (!SCM_INTP(option_scm)) Scm_Error("small integer required, but got %S", option_scm);
432 option = SCM_INT_VALUE(option_scm);
433 val_scm = SCM_ARGREF(2);
434 val = (val_scm);
435 {
436 {
437 int SCM_RESULT;
438 int ival;
439 CHECK_GDBM(gdbm);
440 if (SCM_EXACTP(val)) ival = Scm_GetUInteger(val);
441 else ival = !SCM_FALSEP(val);
442 SCM_RESULT = gdbm_setopt(gdbm->dbf, option, &ival, sizeof(int));
443 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
444 }
445 }
446 }
447
448 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_setopt__NAME, "gdbm-setopt", 11, 11);
449 static SCM_DEFINE_SUBR(gdbm_gdbm_setopt__STUB, 3, 0, SCM_OBJ(&gdbm_gdbm_setopt__NAME), gdbm_gdbm_setopt, NULL, NULL);
450
451 static ScmObj gdbm_gdbm_version(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
452 {
453 SCM_ENTER_SUBR("gdbm-version");
454 {
455 {
456 ScmObj SCM_RESULT;
457 SCM_RESULT = (SCM_MAKE_STR_IMMUTABLE(gdbm_version));
458 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
459 }
460 }
461 }
462
463 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_version__NAME, "gdbm-version", 12, 12);
464 static SCM_DEFINE_SUBR(gdbm_gdbm_version__STUB, 0, 0, SCM_OBJ(&gdbm_gdbm_version__NAME), gdbm_gdbm_version, NULL, NULL);
465
466 static ScmObj gdbm_gdbm_errno(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
467 {
468 SCM_ENTER_SUBR("gdbm-errno");
469 {
470 {
471 int SCM_RESULT;
472 SCM_RESULT = gdbm_errno;
473 gdbm_errno = 0;
474 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
475 }
476 }
477 }
478
479 static SCM_DEFINE_STRING_CONST(gdbm_gdbm_errno__NAME, "gdbm-errno", 10, 10);
480 static SCM_DEFINE_SUBR(gdbm_gdbm_errno__STUB, 0, 0, SCM_OBJ(&gdbm_gdbm_errno__NAME), gdbm_gdbm_errno, NULL, NULL);
481
482 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_READER__VAR__NAME, "GDBM_READER", 11, 11);
483 static ScmObj gdbm_GDBM_READER__VAR = SCM_UNBOUND;
484 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_WRITER__VAR__NAME, "GDBM_WRITER", 11, 11);
485 static ScmObj gdbm_GDBM_WRITER__VAR = SCM_UNBOUND;
486 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_WRCREAT__VAR__NAME, "GDBM_WRCREAT", 12, 12);
487 static ScmObj gdbm_GDBM_WRCREAT__VAR = SCM_UNBOUND;
488 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_NEWDB__VAR__NAME, "GDBM_NEWDB", 10, 10);
489 static ScmObj gdbm_GDBM_NEWDB__VAR = SCM_UNBOUND;
490 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_FAST__VAR__NAME, "GDBM_FAST", 9, 9);
491 static ScmObj gdbm_GDBM_FAST__VAR = SCM_UNBOUND;
492 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_SYNC__VAR__NAME, "GDBM_SYNC", 9, 9);
493 static ScmObj gdbm_GDBM_SYNC__VAR = SCM_UNBOUND;
494 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_NOLOCK__VAR__NAME, "GDBM_NOLOCK", 11, 11);
495 static ScmObj gdbm_GDBM_NOLOCK__VAR = SCM_UNBOUND;
496 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_INSERT__VAR__NAME, "GDBM_INSERT", 11, 11);
497 static ScmObj gdbm_GDBM_INSERT__VAR = SCM_UNBOUND;
498 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_REPLACE__VAR__NAME, "GDBM_REPLACE", 12, 12);
499 static ScmObj gdbm_GDBM_REPLACE__VAR = SCM_UNBOUND;
500 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_CACHESIZE__VAR__NAME, "GDBM_CACHESIZE", 14, 14);
501 static ScmObj gdbm_GDBM_CACHESIZE__VAR = SCM_UNBOUND;
502 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_FASTMODE__VAR__NAME, "GDBM_FASTMODE", 13, 13);
503 static ScmObj gdbm_GDBM_FASTMODE__VAR = SCM_UNBOUND;
504 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_SYNCMODE__VAR__NAME, "GDBM_SYNCMODE", 13, 13);
505 static ScmObj gdbm_GDBM_SYNCMODE__VAR = SCM_UNBOUND;
506 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_CENTFREE__VAR__NAME, "GDBM_CENTFREE", 13, 13);
507 static ScmObj gdbm_GDBM_CENTFREE__VAR = SCM_UNBOUND;
508 static SCM_DEFINE_STRING_CONST(gdbm_GDBM_COALESCEBLKS__VAR__NAME, "GDBM_COALESCEBLKS", 17, 17);
509 static ScmObj gdbm_GDBM_COALESCEBLKS__VAR = SCM_UNBOUND;
510 void Scm_Init_gdbm(ScmModule *module)
511 {
512
513 gdbm_GDBM_COALESCEBLKS__VAR = Scm_Intern(&gdbm_GDBM_COALESCEBLKS__VAR__NAME);
514 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_COALESCEBLKS__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_COALESCEBLKS)));
515 gdbm_GDBM_CENTFREE__VAR = Scm_Intern(&gdbm_GDBM_CENTFREE__VAR__NAME);
516 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_CENTFREE__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_CENTFREE)));
517 gdbm_GDBM_SYNCMODE__VAR = Scm_Intern(&gdbm_GDBM_SYNCMODE__VAR__NAME);
518 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_SYNCMODE__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_SYNCMODE)));
519 gdbm_GDBM_FASTMODE__VAR = Scm_Intern(&gdbm_GDBM_FASTMODE__VAR__NAME);
520 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_FASTMODE__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_FASTMODE)));
521 gdbm_GDBM_CACHESIZE__VAR = Scm_Intern(&gdbm_GDBM_CACHESIZE__VAR__NAME);
522 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_CACHESIZE__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_CACHESIZE)));
523 gdbm_GDBM_REPLACE__VAR = Scm_Intern(&gdbm_GDBM_REPLACE__VAR__NAME);
524 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_REPLACE__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_REPLACE)));
525 gdbm_GDBM_INSERT__VAR = Scm_Intern(&gdbm_GDBM_INSERT__VAR__NAME);
526 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_INSERT__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_INSERT)));
527 gdbm_GDBM_NOLOCK__VAR = Scm_Intern(&gdbm_GDBM_NOLOCK__VAR__NAME);
528 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_NOLOCK__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_NOLOCK)));
529 gdbm_GDBM_SYNC__VAR = Scm_Intern(&gdbm_GDBM_SYNC__VAR__NAME);
530 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_SYNC__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_SYNC)));
531 gdbm_GDBM_FAST__VAR = Scm_Intern(&gdbm_GDBM_FAST__VAR__NAME);
532 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_FAST__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_FAST)));
533 gdbm_GDBM_NEWDB__VAR = Scm_Intern(&gdbm_GDBM_NEWDB__VAR__NAME);
534 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_NEWDB__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_NEWDB)));
535 gdbm_GDBM_WRCREAT__VAR = Scm_Intern(&gdbm_GDBM_WRCREAT__VAR__NAME);
536 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_WRCREAT__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_WRCREAT)));
537 gdbm_GDBM_WRITER__VAR = Scm_Intern(&gdbm_GDBM_WRITER__VAR__NAME);
538 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_WRITER__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_WRITER)));
539 gdbm_GDBM_READER__VAR = Scm_Intern(&gdbm_GDBM_READER__VAR__NAME);
540 Scm_DefineConst(module, SCM_SYMBOL(SCM_OBJ(gdbm_GDBM_READER__VAR)), SCM_OBJ(Scm_MakeInteger(GDBM_READER)));
541 SCM_DEFINE(module, "gdbm-errno", SCM_OBJ(&gdbm_gdbm_errno__STUB));
542 SCM_DEFINE(module, "gdbm-version", SCM_OBJ(&gdbm_gdbm_version__STUB));
543 SCM_DEFINE(module, "gdbm-setopt", SCM_OBJ(&gdbm_gdbm_setopt__STUB));
544 SCM_DEFINE(module, "gdbm-strerror", SCM_OBJ(&gdbm_gdbm_strerror__STUB));
545 SCM_DEFINE(module, "gdbm-exists?", SCM_OBJ(&gdbm_gdbm_existsP__STUB));
546 SCM_DEFINE(module, "gdbm-sync", SCM_OBJ(&gdbm_gdbm_sync__STUB));
547 SCM_DEFINE(module, "gdbm-reorganize", SCM_OBJ(&gdbm_gdbm_reorganize__STUB));
548 SCM_DEFINE(module, "gdbm-nextkey", SCM_OBJ(&gdbm_gdbm_nextkey__STUB));
549 SCM_DEFINE(module, "gdbm-firstkey", SCM_OBJ(&gdbm_gdbm_firstkey__STUB));
550 SCM_DEFINE(module, "gdbm-delete", SCM_OBJ(&gdbm_gdbm_delete__STUB));
551 SCM_DEFINE(module, "gdbm-fetch", SCM_OBJ(&gdbm_gdbm_fetch__STUB));
552 SCM_DEFINE(module, "gdbm-store", SCM_OBJ(&gdbm_gdbm_store__STUB));
553 SCM_DEFINE(module, "gdbm-closed?", SCM_OBJ(&gdbm_gdbm_closedP__STUB));
554 SCM_DEFINE(module, "gdbm-close", SCM_OBJ(&gdbm_gdbm_close__STUB));
555 SCM_DEFINE(module, "gdbm-open", SCM_OBJ(&gdbm_gdbm_open__STUB));
556 }