BOOL Bytes_cmp(MVALUE** stack_ptr, MVALUE* lvar, sVMInfo* info, CLObject vm_type, sCLClass* klass) { CLObject self, right; char* chars; char* chars2; vm_mutex_lock(); self = lvar->mObjectValue.mValue; if(!check_type(self, gBytesTypeObject, info)) { vm_mutex_unlock(); return FALSE; } chars = CLBYTES_DATA(self)->mChars; right = (lvar+1)->mObjectValue.mValue; if(!check_type(right, gBytesTypeObject, info)) { vm_mutex_unlock(); return FALSE; } chars2 = CLBYTES_DATA(right)->mChars; (*stack_ptr)->mObjectValue.mValue = create_int_object(strcmp(chars, chars)); (*stack_ptr)++; vm_mutex_unlock(); return TRUE; }
void entry_native_enum_fields(sCLClass* klass, int num_fields, int values[]) { if(klass->mNumFields == num_fields) { if(is_parent_class_by_name(klass, "int")) { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_int_object(values[i]); } } else if(is_parent_class_by_name(klass, "uint")) { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_uint_object(values[i]); } } else if(is_parent_class_by_name(klass, "byte")) { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_byte_object(values[i]); } } else if(is_parent_class_by_name(klass, "short")) { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_short_object(values[i]); } } else if(is_parent_class_by_name(klass, "long")) { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_long_object(values[i]); } } else { int i; for(i=0; i<num_fields; i++) { klass->mFields[i].uValue.mStaticField.mObjectValue.mValue = create_int_object(values[i]); } } } else { fprintf(stderr, "Clover can't initialize fileds of %s class", REAL_CLASS_NAME(klass)); exit(2); } }
static CLObject create_range_object_for_new(CLObject type_object, sVMInfo* info) { CLObject self; CLObject head_object; CLObject tail_object; head_object = create_int_object(0); push_object(head_object, info); tail_object = create_int_object(0); push_object(tail_object, info); self = create_range_object(type_object, head_object, tail_object); CLOBJECT_HEADER(self)->mType = type_object; pop_object(info); pop_object(info); return self; }
BOOL Bytes_length(MVALUE** stack_ptr, MVALUE* lvar, sVMInfo* info, CLObject vm_type, sCLClass* klass) { CLObject self; self = lvar->mObjectValue.mValue; if(!check_type(self, gBytesTypeObject, info)) { vm_mutex_unlock(); return FALSE; } (*stack_ptr)->mObjectValue.mValue = create_int_object(CLBYTES(self)->mLen); (*stack_ptr)++; return TRUE; }