Class: CDB::CDBMaker

Inherits:
Object
  • Object
show all
Defined in:
lib/cdb/maker_util.rb,
ext/cdb_ext.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'ext/cdb_ext.c', line 63

VALUE 
CDBMaker_initialize(VALUE self,VALUE io) {
  OpenFile *fptr = NULL;
  cdb_make *db = NULL;
  rb_check_type(io,T_FILE);
  GetOpenFile(io, fptr);
  rb_io_check_writable(fptr);
  rb_iv_set(self,"finished",Qfalse);
  Data_Get_Struct(self,cdb_make,db);
  if(cdb_make_start(db,fileno(GetReadFile(fptr))) == -1) 
    rb_sys_fail(0);
  return self;
}

Class Method Details

.fill(file) {|maker| ... } ⇒ Object

Yields:

  • (maker)


3
4
5
6
7
# File 'lib/cdb/maker_util.rb', line 3

def self.fill(file)
  maker = self.new(file)
  yield maker
  maker.finish!
end

Instance Method Details

#finish!Object



90
91
92
93
94
95
96
97
98
99
# File 'ext/cdb_ext.c', line 90

VALUE 
CDBMaker_finish(VALUE self) {
  cdb_make *db = NULL;
  if(rb_iv_get(self,"finished") == Qtrue) 
    rb_raise(rb_eRuntimeError,"cdb is already finished!");
  rb_iv_set(self,"finished",Qtrue);
  Data_Get_Struct(self,cdb_make,db);
  if(cdb_make_finish(db) == -1) rb_sys_fail(0);
  return Qnil;
}

#finished?Boolean

Returns:

  • (Boolean)


101
102
103
104
# File 'ext/cdb_ext.c', line 101

VALUE 
CDBMaker_is_finished(VALUE self) {
  return rb_iv_get(self,"finished");
}

#store(key, value) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
# File 'ext/cdb_ext.c', line 77

VALUE
CDBMaker_store(VALUE self,VALUE key,VALUE value) {
  if(rb_iv_get(self,"finished") == Qtrue) 
    rb_raise(rb_eRuntimeError,"cdb is already finished!");
  cdb_make *db = NULL;
  Data_Get_Struct(self,cdb_make,db);
  key = StringValue(key);
  value = StringValue(value);
  if(cdb_make_add(db,RSTRING(key)->ptr,RSTRING(key)->len,RSTRING(value)->ptr,RSTRING(value)->len) == -1) 
    rb_sys_fail(0);
  return Qnil;
}