2 ** enum.c - Enumerable module
4 ** See Copyright Notice in mruby.h
8 #include <mruby/proc.h>
9 #include <mruby/presym.h>
11 /* internal method `__update_hash(oldhash, index, itemhash)` */
13 enum_update_hash(mrb_state
*mrb
, mrb_value self
)
19 mrb_get_args(mrb
, "iii", &hash
, &index
, &hv
);
20 hash
^= ((uint32_t)hv
<< (index
% 16));
22 return mrb_int_value(mrb
, hash
);
26 mrb_init_enumerable(mrb_state
*mrb
)
28 struct RClass
*enumerable
= mrb_define_module_id(mrb
, MRB_SYM(Enumerable
)); /* 15.3.2 */
29 mrb_define_module_function_id(mrb
, enumerable
, MRB_SYM(__update_hash
), enum_update_hash
, MRB_ARGS_REQ(3));