/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- Scm_Init_odbm
- odbm_odbm_init
- odbm_odbm_close
- odbm_odbm_closedP
- odbm_odbm_store
- odbm_odbm_fetch
- odbm_odbm_delete
- odbm_odbm_firstkey
- odbm_odbm_nextkey
- Scm_Init_odbm
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 <gauche/extend.h>
10 #include "dbmconf.h"
11
12 #if HAVE_DBM_H
13 #include <dbm.h>
14 #elif HAVE_GDBM_DBM_H
15 #include <gdbm/dbm.h>
16 #endif
17
18 #define CHECK_ODBM() if (!odbm_opened) Scm_Error("odbm file already closed")
19
20 /* Hack for initialization stub */
21 static void Scm_odbm_internal_init(ScmModule*);
22 void Scm_Init_odbm(void)
23 {
24 SCM_INIT_EXTENSION(odbm);
25 Scm_odbm_internal_init(SCM_FIND_MODULE("dbm.odbm", SCM_FIND_MODULE_CREATE));
26 }
27 #define Scm_Init_odbm Scm_odbm_internal_init
28
29 #define TO_DATUM(datum_, scm_) \
30 do { \
31 const ScmStringBody *b = SCM_STRING_BODY(scm_);\
32 datum_.dptr = (char*)SCM_STRING_BODY_START(b);\
33 datum_.dsize = SCM_STRING_BODY_SIZE(b); \
34 } while (0)
35 #define FROM_DATUM(scm_, datum_) \
36 do { \
37 if (datum_.dptr) { \
38 scm_ = Scm_MakeString(datum_.dptr, datum_.dsize, -1, SCM_MAKSTR_COPYING); \
39 } else { \
40 scm_ = SCM_FALSE; \
41 } \
42 } while (0)
43
44 static int odbm_opened = FALSE;
45 static ScmObj odbm_odbm_init(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
46 {
47 ScmObj name_scm;
48 ScmString* name;
49 SCM_ENTER_SUBR("odbm-init");
50 name_scm = SCM_ARGREF(0);
51 if (!SCM_STRINGP(name_scm)) Scm_Error("string required, but got %S", name_scm);
52 name = SCM_STRING(name_scm);
53 {
54 {
55 int SCM_RESULT;
56 if (odbm_opened) Scm_Error("dbm file is already opened.");
57 SCM_RESULT = dbminit(Scm_GetString(name));
58 if (SCM_RESULT < 0) {
59 Scm_SysError("couldn't open dbm database %S", name);
60 }
61 odbm_opened = TRUE;
62 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
63 }
64 }
65 }
66
67 static SCM_DEFINE_STRING_CONST(odbm_odbm_init__NAME, "odbm-init", 9, 9);
68 static SCM_DEFINE_SUBR(odbm_odbm_init__STUB, 1, 0, SCM_OBJ(&odbm_odbm_init__NAME), odbm_odbm_init, NULL, NULL);
69
70 static ScmObj odbm_odbm_close(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
71 {
72 SCM_ENTER_SUBR("odbm-close");
73 {
74 if (odbm_opened) {
75 dbmclose();
76 odbm_opened = FALSE;
77 }
78 SCM_RETURN(SCM_UNDEFINED);
79 }
80 }
81
82 static SCM_DEFINE_STRING_CONST(odbm_odbm_close__NAME, "odbm-close", 10, 10);
83 static SCM_DEFINE_SUBR(odbm_odbm_close__STUB, 0, 0, SCM_OBJ(&odbm_odbm_close__NAME), odbm_odbm_close, NULL, NULL);
84
85 static ScmObj odbm_odbm_closedP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
86 {
87 SCM_ENTER_SUBR("odbm-closed?");
88 {
89 {
90 int SCM_RESULT;
91 SCM_RESULT = (!odbm_opened);
92 SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT));
93 }
94 }
95 }
96
97 static SCM_DEFINE_STRING_CONST(odbm_odbm_closedP__NAME, "odbm-closed?", 12, 12);
98 static SCM_DEFINE_SUBR(odbm_odbm_closedP__STUB, 0, 0, SCM_OBJ(&odbm_odbm_closedP__NAME), odbm_odbm_closedP, NULL, NULL);
99
100 static ScmObj odbm_odbm_store(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
101 {
102 ScmObj key_scm;
103 ScmString* key;
104 ScmObj val_scm;
105 ScmString* val;
106 SCM_ENTER_SUBR("odbm-store");
107 key_scm = SCM_ARGREF(0);
108 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
109 key = SCM_STRING(key_scm);
110 val_scm = SCM_ARGREF(1);
111 if (!SCM_STRINGP(val_scm)) Scm_Error("string required, but got %S", val_scm);
112 val = SCM_STRING(val_scm);
113 {
114 {
115 int SCM_RESULT;
116 datum dkey, dval;
117 CHECK_ODBM();
118 TO_DATUM(dkey, key);
119 TO_DATUM(dval, val);
120 SCM_RESULT = store(dkey, dval);
121 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
122 }
123 }
124 }
125
126 static SCM_DEFINE_STRING_CONST(odbm_odbm_store__NAME, "odbm-store", 10, 10);
127 static SCM_DEFINE_SUBR(odbm_odbm_store__STUB, 2, 0, SCM_OBJ(&odbm_odbm_store__NAME), odbm_odbm_store, NULL, NULL);
128
129 static ScmObj odbm_odbm_fetch(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
130 {
131 ScmObj key_scm;
132 ScmString* key;
133 SCM_ENTER_SUBR("odbm-fetch");
134 key_scm = SCM_ARGREF(0);
135 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
136 key = SCM_STRING(key_scm);
137 {
138 {
139 ScmObj SCM_RESULT;
140 datum dkey, dval;
141 CHECK_ODBM();
142 TO_DATUM(dkey, key);
143 dval = fetch(dkey);
144 FROM_DATUM(SCM_RESULT, dval);
145 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
146 }
147 }
148 }
149
150 static SCM_DEFINE_STRING_CONST(odbm_odbm_fetch__NAME, "odbm-fetch", 10, 10);
151 static SCM_DEFINE_SUBR(odbm_odbm_fetch__STUB, 1, 0, SCM_OBJ(&odbm_odbm_fetch__NAME), odbm_odbm_fetch, NULL, NULL);
152
153 static ScmObj odbm_odbm_delete(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
154 {
155 ScmObj key_scm;
156 ScmString* key;
157 SCM_ENTER_SUBR("odbm-delete");
158 key_scm = SCM_ARGREF(0);
159 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
160 key = SCM_STRING(key_scm);
161 {
162 {
163 int SCM_RESULT;
164 datum dkey;
165 CHECK_ODBM();
166 TO_DATUM(dkey, key);
167 SCM_RESULT = delete(dkey);
168 SCM_RETURN(Scm_MakeInteger(SCM_RESULT));
169 }
170 }
171 }
172
173 static SCM_DEFINE_STRING_CONST(odbm_odbm_delete__NAME, "odbm-delete", 11, 11);
174 static SCM_DEFINE_SUBR(odbm_odbm_delete__STUB, 1, 0, SCM_OBJ(&odbm_odbm_delete__NAME), odbm_odbm_delete, NULL, NULL);
175
176 static ScmObj odbm_odbm_firstkey(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
177 {
178 SCM_ENTER_SUBR("odbm-firstkey");
179 {
180 {
181 ScmObj SCM_RESULT;
182 datum dkey;
183 CHECK_ODBM();
184 dkey = firstkey();
185 FROM_DATUM(SCM_RESULT, dkey);
186 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
187 }
188 }
189 }
190
191 static SCM_DEFINE_STRING_CONST(odbm_odbm_firstkey__NAME, "odbm-firstkey", 13, 13);
192 static SCM_DEFINE_SUBR(odbm_odbm_firstkey__STUB, 0, 0, SCM_OBJ(&odbm_odbm_firstkey__NAME), odbm_odbm_firstkey, NULL, NULL);
193
194 static ScmObj odbm_odbm_nextkey(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
195 {
196 ScmObj key_scm;
197 ScmString* key;
198 SCM_ENTER_SUBR("odbm-nextkey");
199 key_scm = SCM_ARGREF(0);
200 if (!SCM_STRINGP(key_scm)) Scm_Error("string required, but got %S", key_scm);
201 key = SCM_STRING(key_scm);
202 {
203 {
204 ScmObj SCM_RESULT;
205 datum dkey, dnkey;
206 CHECK_ODBM();
207 TO_DATUM(dkey, key);
208 dnkey = nextkey(dkey);
209 FROM_DATUM(SCM_RESULT, dnkey);
210 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
211 }
212 }
213 }
214
215 static SCM_DEFINE_STRING_CONST(odbm_odbm_nextkey__NAME, "odbm-nextkey", 12, 12);
216 static SCM_DEFINE_SUBR(odbm_odbm_nextkey__STUB, 1, 0, SCM_OBJ(&odbm_odbm_nextkey__NAME), odbm_odbm_nextkey, NULL, NULL);
217
218 void Scm_Init_odbm(ScmModule *module)
219 {
220
221 SCM_DEFINE(module, "odbm-nextkey", SCM_OBJ(&odbm_odbm_nextkey__STUB));
222 SCM_DEFINE(module, "odbm-firstkey", SCM_OBJ(&odbm_odbm_firstkey__STUB));
223 SCM_DEFINE(module, "odbm-delete", SCM_OBJ(&odbm_odbm_delete__STUB));
224 SCM_DEFINE(module, "odbm-fetch", SCM_OBJ(&odbm_odbm_fetch__STUB));
225 SCM_DEFINE(module, "odbm-store", SCM_OBJ(&odbm_odbm_store__STUB));
226 SCM_DEFINE(module, "odbm-closed?", SCM_OBJ(&odbm_odbm_closedP__STUB));
227 SCM_DEFINE(module, "odbm-close", SCM_OBJ(&odbm_odbm_close__STUB));
228 SCM_DEFINE(module, "odbm-init", SCM_OBJ(&odbm_odbm_init__STUB));
229 }