BOOL Range_setValue(MVALUE** stack_ptr, MVALUE* lvar, sVMInfo* info, CLObject vm_type) { CLObject self; CLObject value; CLObject head_object; CLObject tail_object; int head_value; int tail_value; self = lvar->mObjectValue.mValue; // self if(!check_type(self, gRangeTypeObject, info)) { return FALSE; } value = (lvar+1)->mObjectValue.mValue; if(!check_type(value, gRangeTypeObject, info)) { return FALSE; } CLRANGE(self)->mHead = CLRANGE(value)->mHead; CLRANGE(value)->mTail = CLRANGE(value)->mTail; (*stack_ptr)->mObjectValue.mValue = create_null_object(); // push result (*stack_ptr)++; return TRUE; }
BOOL Range_setTail(MVALUE** stack_ptr, MVALUE* lvar, sVMInfo* info, CLObject vm_type) { CLObject self; CLObject value; CLObject tail_object; self = lvar->mObjectValue.mValue; // self if(!check_type(self, gRangeTypeObject, info)) { return FALSE; } value = (lvar+1)->mObjectValue.mValue; if(!check_type_with_nullable(value, gIntTypeObject, info)) { return FALSE; } CLRANGE(self)->mTail = value; (*stack_ptr)->mObjectValue.mValue = create_null_object(); // push result (*stack_ptr)++; return TRUE; }
static CLObject create_null_object_for_new(CLObject type_object, sVMInfo* info) { CLObject obj; obj = create_null_object(); CLOBJECT_HEADER(obj)->mType = type_object; return obj; }