Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);
    }
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}