root/ext/dbm/gdbm.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ScmGdbm
  2. gdbm_print
  3. Scm_Init_gdbm
  4. gdbm_finalize
  5. gdbm_gdbm_open
  6. gdbm_gdbm_close
  7. gdbm_gdbm_closedP
  8. gdbm_gdbm_store
  9. gdbm_gdbm_fetch
  10. gdbm_gdbm_delete
  11. gdbm_gdbm_firstkey
  12. gdbm_gdbm_nextkey
  13. gdbm_gdbm_reorganize
  14. gdbm_gdbm_sync
  15. gdbm_gdbm_existsP
  16. gdbm_gdbm_strerror
  17. gdbm_gdbm_setopt
  18. gdbm_gdbm_version
  19. gdbm_gdbm_errno
  20. 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 }

/* [<][>][^][v][top][bottom][index][help] */