Method: Dat::Logic#initialize

Defined in:
ext/logic/logic.c

#initialize(*args) ⇒ Object



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;
}