Ruby  2.0.0p648(2015-12-16revision53162)
Data Structures | Macros | Functions | Variables
gdbm.c File Reference
#include "ruby.h"
#include <gdbm.h>
#include <fcntl.h>
#include <errno.h>

Go to the source code of this file.

Data Structures

struct  dbmdata
 

Macros

#define TOO_LONG(n)   0
 
#define RUBY_GDBM_RW_BIT   0x20000000
 
#define MY_BLOCK_SIZE   (2048)
 
#define MY_FATAL_FUNC   rb_gdbm_fatal
 
#define GetDBM(obj, dbmp)
 
#define GetDBM2(obj, data, dbm)
 

Functions

static void rb_gdbm_fatal (const char *msg)
 
static void closed_dbm (void)
 
static void free_dbm (struct dbmdata *dbmp)
 
static VALUE fgdbm_close (VALUE obj)
 
static VALUE fgdbm_closed (VALUE obj)
 
static VALUE fgdbm_s_alloc (VALUE klass)
 
static VALUE fgdbm_initialize (int argc, VALUE *argv, VALUE obj)
 
static VALUE fgdbm_s_open (int argc, VALUE *argv, VALUE klass)
 
static VALUE rb_gdbm_fetch (GDBM_FILE dbm, datum key)
 
static VALUE rb_gdbm_fetch2 (GDBM_FILE dbm, VALUE keystr)
 
static VALUE rb_gdbm_fetch3 (VALUE obj, VALUE keystr)
 
static VALUE rb_gdbm_firstkey (GDBM_FILE dbm)
 
static VALUE rb_gdbm_nextkey (GDBM_FILE dbm, VALUE keystr)
 
static VALUE fgdbm_fetch (VALUE obj, VALUE keystr, VALUE ifnone)
 
static VALUE fgdbm_aref (VALUE obj, VALUE keystr)
 
static VALUE fgdbm_fetch_m (int argc, VALUE *argv, VALUE obj)
 
static VALUE fgdbm_key (VALUE obj, VALUE valstr)
 
static VALUE fgdbm_index (VALUE obj, VALUE value)
 
static VALUE fgdbm_select (VALUE obj)
 
static VALUE fgdbm_values_at (int argc, VALUE *argv, VALUE obj)
 
static void rb_gdbm_modify (VALUE obj)
 
static VALUE rb_gdbm_delete (VALUE obj, VALUE keystr)
 
static VALUE fgdbm_delete (VALUE obj, VALUE keystr)
 
static VALUE fgdbm_shift (VALUE obj)
 
static VALUE fgdbm_delete_if (VALUE obj)
 
static VALUE fgdbm_clear (VALUE obj)
 
static VALUE fgdbm_invert (VALUE obj)
 
static VALUE fgdbm_store (VALUE obj, VALUE keystr, VALUE valstr)
 
static VALUE update_i (VALUE pair, VALUE dbm)
 
static VALUE fgdbm_update (VALUE obj, VALUE other)
 
static VALUE fgdbm_replace (VALUE obj, VALUE other)
 
static VALUE fgdbm_length (VALUE obj)
 
static VALUE fgdbm_empty_p (VALUE obj)
 
static VALUE fgdbm_each_value (VALUE obj)
 
static VALUE fgdbm_each_key (VALUE obj)
 
static VALUE fgdbm_each_pair (VALUE obj)
 
static VALUE fgdbm_keys (VALUE obj)
 
static VALUE fgdbm_values (VALUE obj)
 
static VALUE fgdbm_has_key (VALUE obj, VALUE keystr)
 
static VALUE fgdbm_has_value (VALUE obj, VALUE valstr)
 
static VALUE fgdbm_to_a (VALUE obj)
 
static VALUE fgdbm_reorganize (VALUE obj)
 
static VALUE fgdbm_sync (VALUE obj)
 
static VALUE fgdbm_set_cachesize (VALUE obj, VALUE val)
 
static VALUE fgdbm_set_fastmode (VALUE obj, VALUE val)
 
static VALUE fgdbm_set_syncmode (VALUE obj, VALUE val)
 
static VALUE fgdbm_to_hash (VALUE obj)
 
static VALUE fgdbm_reject (VALUE obj)
 
void Init_gdbm (void)
 

Variables

static VALUE rb_cGDBM
 
static VALUE rb_eGDBMError
 
static VALUE rb_eGDBMFatalError
 

Macro Definition Documentation

◆ GetDBM

#define GetDBM (   obj,
  dbmp 
)
Value:
do {\
Data_Get_Struct((obj), struct dbmdata, (dbmp));\
if ((dbmp) == 0) closed_dbm();\
if ((dbmp)->di_dbm == 0) closed_dbm();\
} while (0)
if(dispIdMember==DISPID_VALUE)
Definition: win32ole.c:791
Definition: dbm.c:37
static void closed_dbm(void)
Definition: gdbm.c:98

Definition at line 103 of file gdbm.c.

Referenced by fgdbm_close(), and fgdbm_empty_p().

◆ GetDBM2

#define GetDBM2 (   obj,
  data,
  dbm 
)

◆ MY_BLOCK_SIZE

#define MY_BLOCK_SIZE   (2048)

Definition at line 84 of file gdbm.c.

Referenced by fgdbm_initialize().

◆ MY_FATAL_FUNC

#define MY_FATAL_FUNC   rb_gdbm_fatal

Definition at line 85 of file gdbm.c.

Referenced by fgdbm_initialize().

◆ RUBY_GDBM_RW_BIT

#define RUBY_GDBM_RW_BIT   0x20000000

Definition at line 82 of file gdbm.c.

Referenced by fgdbm_initialize(), and Init_gdbm().

◆ TOO_LONG

#define TOO_LONG (   n)    0

Definition at line 79 of file gdbm.c.

Referenced by fgdbm_has_key(), rb_gdbm_delete(), rb_gdbm_fetch2(), and rb_gdbm_nextkey().

Function Documentation

◆ closed_dbm()

static void closed_dbm ( void  )
static

Definition at line 98 of file gdbm.c.

References rb_eRuntimeError, and rb_raise().

◆ fgdbm_aref()

static VALUE fgdbm_aref ( VALUE  obj,
VALUE  keystr 
)
static

Definition at line 394 of file gdbm.c.

References rb_gdbm_fetch3().

Referenced by Init_gdbm().

◆ fgdbm_clear()

static VALUE fgdbm_clear ( VALUE  obj)
static

Definition at line 632 of file gdbm.c.

References dbmdata::di_size, datum::dptr, free(), GetDBM2, key, rb_eGDBMError, rb_gdbm_modify(), and rb_raise().

Referenced by fgdbm_replace(), and Init_gdbm().

◆ fgdbm_close()

static VALUE fgdbm_close ( VALUE  obj)
static

Definition at line 130 of file gdbm.c.

References dbmdata::di_dbm, GetDBM, and Qnil.

Referenced by fgdbm_s_open(), and Init_gdbm().

◆ fgdbm_closed()

static VALUE fgdbm_closed ( VALUE  obj)
static

Definition at line 148 of file gdbm.c.

References Data_Get_Struct, dbmdata::di_dbm, Qfalse, and Qtrue.

Referenced by Init_gdbm().

◆ fgdbm_delete()

static VALUE fgdbm_delete ( VALUE  obj,
VALUE  keystr 
)
static

Definition at line 551 of file gdbm.c.

References fgdbm_fetch(), Qnil, and rb_gdbm_delete().

Referenced by Init_gdbm().

◆ fgdbm_delete_if()

static VALUE fgdbm_delete_if ( VALUE  obj)
static

◆ fgdbm_each_key()

static VALUE fgdbm_each_key ( VALUE  obj)
static

Definition at line 859 of file gdbm.c.

References GetDBM2, rb_gdbm_firstkey(), rb_gdbm_nextkey(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_gdbm().

◆ fgdbm_each_pair()

static VALUE fgdbm_each_pair ( VALUE  obj)
static

◆ fgdbm_each_value()

static VALUE fgdbm_each_value ( VALUE  obj)
static

Definition at line 833 of file gdbm.c.

References GetDBM2, rb_gdbm_fetch2(), rb_gdbm_firstkey(), rb_gdbm_nextkey(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_gdbm().

◆ fgdbm_empty_p()

static VALUE fgdbm_empty_p ( VALUE  obj)
static

Definition at line 803 of file gdbm.c.

References dbmdata::di_dbm, dbmdata::di_size, free(), GetDBM, key, Qfalse, and Qtrue.

Referenced by Init_gdbm().

◆ fgdbm_fetch()

static VALUE fgdbm_fetch ( VALUE  obj,
VALUE  keystr,
VALUE  ifnone 
)
static

Definition at line 374 of file gdbm.c.

References NIL_P, Qnil, rb_block_given_p(), rb_gdbm_fetch3(), and rb_yield().

Referenced by fgdbm_delete(), and fgdbm_fetch_m().

◆ fgdbm_fetch_m()

static VALUE fgdbm_fetch_m ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 407 of file gdbm.c.

References argc, argv, fgdbm_fetch(), NIL_P, rb_block_given_p(), rb_eIndexError, rb_raise(), and rb_scan_args().

Referenced by Init_gdbm().

◆ fgdbm_has_key()

static VALUE fgdbm_has_key ( VALUE  obj,
VALUE  keystr 
)
static

Definition at line 963 of file gdbm.c.

References GetDBM2, key, Qfalse, Qtrue, RSTRING_LENINT, RSTRING_PTR, StringValue, and TOO_LONG.

Referenced by Init_gdbm().

◆ fgdbm_has_value()

static VALUE fgdbm_has_value ( VALUE  obj,
VALUE  valstr 
)
static

◆ fgdbm_index()

static VALUE fgdbm_index ( VALUE  obj,
VALUE  value 
)
static

Definition at line 451 of file gdbm.c.

References fgdbm_key(), and rb_warn().

Referenced by Init_gdbm().

◆ fgdbm_initialize()

static VALUE fgdbm_initialize ( int  argc,
VALUE argv,
VALUE  obj 
)
static

◆ fgdbm_invert()

static VALUE fgdbm_invert ( VALUE  obj)
static

Definition at line 676 of file gdbm.c.

References GetDBM2, hash(), rb_gdbm_fetch2(), rb_gdbm_firstkey(), rb_gdbm_nextkey(), rb_hash_aset(), rb_hash_new(), and RTEST.

Referenced by Init_gdbm().

◆ fgdbm_key()

static VALUE fgdbm_key ( VALUE  obj,
VALUE  valstr 
)
static

◆ fgdbm_keys()

static VALUE fgdbm_keys ( VALUE  obj)
static

Definition at line 911 of file gdbm.c.

References GetDBM2, rb_ary_new(), rb_ary_push(), rb_gdbm_firstkey(), rb_gdbm_nextkey(), and RTEST.

Referenced by Init_gdbm().

◆ fgdbm_length()

static VALUE fgdbm_length ( VALUE  obj)
static

Definition at line 776 of file gdbm.c.

References dbmdata::di_size, free(), GetDBM2, i, INT2FIX, and key.

Referenced by Init_gdbm().

◆ fgdbm_reject()

static VALUE fgdbm_reject ( VALUE  obj)
static

Definition at line 1198 of file gdbm.c.

References fgdbm_to_hash(), and rb_hash_delete_if().

Referenced by Init_gdbm().

◆ fgdbm_reorganize()

static VALUE fgdbm_reorganize ( VALUE  obj)
static

Definition at line 1047 of file gdbm.c.

References GetDBM2, rb_fd_fix_cloexec(), and rb_gdbm_modify().

Referenced by Init_gdbm().

◆ fgdbm_replace()

static VALUE fgdbm_replace ( VALUE  obj,
VALUE  other 
)
static

Definition at line 761 of file gdbm.c.

References fgdbm_clear(), rb_block_call(), rb_intern, and update_i().

Referenced by Init_gdbm().

◆ fgdbm_s_alloc()

static VALUE fgdbm_s_alloc ( VALUE  klass)
static

Definition at line 162 of file gdbm.c.

References Data_Wrap_Struct, and free_dbm().

Referenced by Init_gdbm().

◆ fgdbm_s_open()

static VALUE fgdbm_s_open ( int  argc,
VALUE argv,
VALUE  klass 
)
static

◆ fgdbm_select()

static VALUE fgdbm_select ( VALUE  obj)
static

◆ fgdbm_set_cachesize()

static VALUE fgdbm_set_cachesize ( VALUE  obj,
VALUE  val 
)
static

Definition at line 1088 of file gdbm.c.

References FIX2INT, GetDBM2, rb_eGDBMError, rb_raise(), and val.

Referenced by Init_gdbm().

◆ fgdbm_set_fastmode()

static VALUE fgdbm_set_fastmode ( VALUE  obj,
VALUE  val 
)
static

Definition at line 1113 of file gdbm.c.

References GetDBM2, rb_eGDBMError, rb_raise(), RTEST, and val.

Referenced by fgdbm_set_syncmode(), and Init_gdbm().

◆ fgdbm_set_syncmode()

static VALUE fgdbm_set_syncmode ( VALUE  obj,
VALUE  val 
)
static

Definition at line 1144 of file gdbm.c.

References fgdbm_set_fastmode(), GetDBM2, Qfalse, Qtrue, rb_eGDBMError, rb_raise(), RTEST, and val.

Referenced by Init_gdbm().

◆ fgdbm_shift()

static VALUE fgdbm_shift ( VALUE  obj)
static

Definition at line 568 of file gdbm.c.

References GetDBM2, NIL_P, Qnil, rb_assoc_new(), rb_gdbm_delete(), rb_gdbm_fetch2(), rb_gdbm_firstkey(), and rb_gdbm_modify().

Referenced by Init_gdbm().

◆ fgdbm_store()

static VALUE fgdbm_store ( VALUE  obj,
VALUE  keystr,
VALUE  valstr 
)
static

◆ fgdbm_sync()

static VALUE fgdbm_sync ( VALUE  obj)
static

Definition at line 1070 of file gdbm.c.

References GetDBM2, and rb_gdbm_modify().

Referenced by Init_gdbm().

◆ fgdbm_to_a()

static VALUE fgdbm_to_a ( VALUE  obj)
static

◆ fgdbm_to_hash()

static VALUE fgdbm_to_hash ( VALUE  obj)
static

◆ fgdbm_update()

static VALUE fgdbm_update ( VALUE  obj,
VALUE  other 
)
static

Definition at line 747 of file gdbm.c.

References rb_block_call(), rb_intern, and update_i().

Referenced by Init_gdbm().

◆ fgdbm_values()

static VALUE fgdbm_values ( VALUE  obj)
static

Definition at line 935 of file gdbm.c.

References free(), GetDBM2, key, rb_ary_new(), rb_ary_push(), and rb_gdbm_fetch().

Referenced by Init_gdbm().

◆ fgdbm_values_at()

static VALUE fgdbm_values_at ( int  argc,
VALUE argv,
VALUE  obj 
)
static

Definition at line 494 of file gdbm.c.

References argc, argv, i, rb_ary_new2(), rb_ary_push(), and rb_gdbm_fetch3().

Referenced by Init_gdbm().

◆ free_dbm()

static void free_dbm ( struct dbmdata dbmp)
static

Definition at line 115 of file gdbm.c.

References dbmdata::di_dbm, and xfree().

Referenced by fgdbm_initialize(), fgdbm_s_alloc(), and fgdbm_s_open().

◆ Init_gdbm()

void Init_gdbm ( void  )

◆ rb_gdbm_delete()

static VALUE rb_gdbm_delete ( VALUE  obj,
VALUE  keystr 
)
static

◆ rb_gdbm_fatal()

static void rb_gdbm_fatal ( const char *  msg)
static

Definition at line 87 of file gdbm.c.

References msg, rb_eGDBMFatalError, and rb_raise().

◆ rb_gdbm_fetch()

static VALUE rb_gdbm_fetch ( GDBM_FILE  dbm,
datum  key 
)
static

Definition at line 296 of file gdbm.c.

References free(), key, OBJ_TAINT, Qnil, rb_str_new(), and val.

Referenced by fgdbm_values(), and rb_gdbm_fetch2().

◆ rb_gdbm_fetch2()

static VALUE rb_gdbm_fetch2 ( GDBM_FILE  dbm,
VALUE  keystr 
)
static

◆ rb_gdbm_fetch3()

static VALUE rb_gdbm_fetch3 ( VALUE  obj,
VALUE  keystr 
)
static

Definition at line 327 of file gdbm.c.

References GetDBM2, and rb_gdbm_fetch2().

Referenced by fgdbm_aref(), fgdbm_fetch(), and fgdbm_values_at().

◆ rb_gdbm_firstkey()

static VALUE rb_gdbm_firstkey ( GDBM_FILE  dbm)
static

◆ rb_gdbm_modify()

static void rb_gdbm_modify ( VALUE  obj)
static

◆ rb_gdbm_nextkey()

static VALUE rb_gdbm_nextkey ( GDBM_FILE  dbm,
VALUE  keystr 
)
static

◆ update_i()

static VALUE update_i ( VALUE  pair,
VALUE  dbm 
)
static

Definition at line 728 of file gdbm.c.

References Check_Type, fgdbm_store(), Qnil, RARRAY_LEN, RARRAY_PTR, rb_eArgError, rb_raise(), and T_ARRAY.

Referenced by fgdbm_replace(), and fgdbm_update().

Variable Documentation

◆ rb_cGDBM

VALUE rb_cGDBM
static

Definition at line 74 of file gdbm.c.

Referenced by Init_gdbm().

◆ rb_eGDBMError

VALUE rb_eGDBMError
static

◆ rb_eGDBMFatalError

VALUE rb_eGDBMFatalError
static

Definition at line 74 of file gdbm.c.

Referenced by Init_gdbm(), and rb_gdbm_fatal().