ObjFW  Diff

Differences From Artifact [7510694bab]:

To Artifact [7a62dc26ba]:


24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38







-
+







#import "macros.h"

IMP (*objc_forward_handler)(id, SEL) = NULL;

IMP
objc_not_found_handler(id obj, SEL sel)
{
	BOOL is_class = object_getClass(obj)->info & OBJC_CLASS_INFO_METACLASS;
	bool is_class = object_getClass(obj)->info & OBJC_CLASS_INFO_METACLASS;

	if (!(object_getClass(obj)->info & OBJC_CLASS_INFO_INITIALIZED)) {
		Class cls = (is_class ? (Class)obj : object_getClass(obj));

		objc_initialize_class(cls);

		if (!(cls->info & OBJC_CLASS_INFO_SETUP)) {
55
56
57
58
59
60
61
62

63
64
65
66

67
68

69
70
71
72
73
74
75
76
55
56
57
58
59
60
61

62
63
64
65

66
67

68

69
70
71
72
73
74
75







-
+



-
+

-
+
-







	if (objc_forward_handler != NULL)
		return objc_forward_handler(obj, sel);

	OBJC_ERROR("Selector %c[%s] is not implemented for class %s!",
	    (is_class ? '+' : '-'), sel_getName(sel), object_getClassName(obj));
}

BOOL
bool
class_respondsToSelector(Class cls, SEL sel)
{
	if (cls == Nil)
		return NO;
		return false;

	return (objc_sparsearray_get(cls->dtable, (uint32_t)sel->uid) != NULL
	return (objc_sparsearray_get(cls->dtable, (uint32_t)sel->uid) != NULL);
	    ? YES : NO);
}

#ifndef OF_ASM_LOOKUP
static id
nil_method(id self, SEL _cmd)
{
	return nil;