33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'ext/logic/logic.c', line 33
static VALUE init(int argc, VALUE *argv, VALUE self) {
VALUE dict, opt, add, replace, delete, transpose;
rb_scan_args(argc, argv, "11", &dict, &opt);
if (NIL_P(opt)) opt = rb_hash_new();
rb_iv_set(self, "@dict", dict);
add = rb_hash_lookup2(opt, ID2SYM(rb_intern("add")), Qtrue);
replace = rb_hash_lookup2(opt, ID2SYM(rb_intern("replace")), Qtrue);
delete = rb_hash_lookup2(opt, ID2SYM(rb_intern("delete")), Qtrue);
transpose = rb_hash_lookup2(opt, ID2SYM(rb_intern("delete")), Qfalse);
rb_iv_set(self, "@add", add);
rb_iv_set(self, "@replace", replace);
rb_iv_set(self, "@delete", delete) ;
rb_iv_set(self, "@transpose", transpose);
rb_iv_set(self, "@min_size", rb_hash_lookup2(opt, ID2SYM(rb_intern("min_size")), INT2FIX(MIN_SIZE)));
rb_iv_set(self, "@cachable", (RTEST(add) && RTEST(replace) && RTEST(delete) && !RTEST(transpose) ? Qtrue : Qfalse));
rb_iv_set(self, "@perturb_cache", rb_hash_new());
return self;
}
|