示例#1
0
文件: class.c 项目: Strongc/WinObjC
BOOL class_isKindOfClass(Class cls1, Class cls2) {
    objc_initialize_class(cls1);
    objc_initialize_class(cls2);

    Class iter;

    for (iter = cls1; iter != Nil; iter = iter->superclass)
        if (iter == cls2)
            return YES;

    return NO;
}
示例#2
0
文件: class.c 项目: eiximenis/WinObjC
unsigned long
class_getInstanceSize(Class cls)
{
    objc_initialize_class(cls);

    return cls->instance_size;
}
示例#3
0
文件: class.c 项目: Strongc/WinObjC
Method class_getInstanceMethod(Class cls, SEL name) {
    objc_global_mutex_lock();
    objc_initialize_class(cls);
    Method m = NULL;
    _class_lookupMethodImplementation(cls, name, &m);
    objc_global_mutex_unlock();
    return m;
}
示例#4
0
文件: class.c 项目: Strongc/WinObjC
Property class_getProperty(Class cls, const char* name) {
    if (cls && name) {
        objc_initialize_class(cls);
        for (struct objc_property_list* propList = cls->properties; propList != NULL; propList = propList->next) {
            for (unsigned i = 0; i < propList->count; ++i) {
                Property currentProperty = &propList->properties[i];
                if (strcmp(currentProperty->name, name) == 0) {
                    return currentProperty;
                }
            }
        }
    }
    return NULL;
}
示例#5
0
文件: class.c 项目: Strongc/WinObjC
Ivar class_getInstanceVariable(Class cls, const char* name) {
    objc_initialize_class(cls);

    struct objc_ivar_list* list = (struct objc_ivar_list*)cls->ivars;
    if (list) {
        for (unsigned i = 0; i < list->count; i++) {
            struct objc_ivar* curIvar = &list->ivars[i];

            if (strcmp(curIvar->name, name) == 0) {
                return curIvar;
            }
        }
    }

    return NULL;
}
示例#6
0
文件: class.c 项目: Strongc/WinObjC
Class class_getSuperclass(Class cls) {
    objc_initialize_class(cls);
    return cls->superclass;
}