void TrArray_init(VM) { OBJ c = TR_INIT_CORE_CLASS(Array, Object); tr_def(c, "length", TrArray_length, 0); tr_def(c, "size", TrArray_length, 0); tr_def(c, "<<", TrArray_push, 1); tr_def(c, "[]", TrArray_at, 1); tr_def(c, "[]=", TrArray_set, 2); }
void TrKernel_init(VM) { OBJ m = tr_defmodule("Kernel"); TrModule_include(vm, TR_CORE_CLASS(Object), m); tr_def(m, "puts", TrKernel_puts, -1); tr_def(m, "eval", TrKernel_eval, -1); tr_def(m, "load", TrKernel_load, 1); tr_def(m, "binding", TrKernel_binding, 0); tr_def(m, "raise", TrKernel_raise, -1); }
void TrPrimitive_init(VM) { OBJ nilc = TR_INIT_CLASS(NilClass, Object); OBJ truec = TR_INIT_CLASS(TrueClass, Object); OBJ falsec = TR_INIT_CLASS(FalseClass, Object); vm->primitives[TR_NIL] = TrClass_allocate(vm, nilc); vm->primitives[TR_TRUE] = TrClass_allocate(vm, truec); vm->primitives[TR_FALSE] = TrClass_allocate(vm, falsec); tr_def(nilc, "to_s", TrNil_to_s, 0); tr_def(truec, "to_s", TrTrue_to_s, 0); tr_def(falsec, "to_s", TrFalse_to_s, 0); }
void TrRange_init(VM) { OBJ c = TR_INIT_CORE_CLASS(Range, Object); tr_def(c, "first", TrRange_first, 0); tr_def(c, "last", TrRange_last, 0); tr_def(c, "exclude_end?", TrRange_exclude_end, 0); }