aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-10-03 22:56:12 +1300
committerArslaan Pathan <[email protected]>2026-10-03 22:56:12 +1300
commit491a0ae5b62ce235253b9837d04075160f60fede (patch)
tree90b790ec7505acc2755c514a6b2f493cd8a9fe63
parentf1a8501ff7343ec253ce96e06b621ed8fedf08cd (diff)
downloadParadox-491a0ae5b62ce235253b9837d04075160f60fede.tar.xz
Paradox-491a0ae5b62ce235253b9837d04075160f60fede.zip
add more introspection stuff (and half-written Introspection test)
-rw-r--r--include/Paradox/Object.h3
-rw-r--r--src/Object.m12
-rw-r--r--tests/Introspection.m23
3 files changed, 38 insertions, 0 deletions
diff --git a/include/Paradox/Object.h b/include/Paradox/Object.h
index 2889cd9..21b20ac 100644
--- a/include/Paradox/Object.h
+++ b/include/Paradox/Object.h
@@ -20,6 +20,9 @@
/* object introspection */
- (Class)class;
- (Class)superclass;
++ (Class)class;
++ (Class)superclass;
++ (const char *)className; // CHANGE TO (PXString *) WHEN IMPLEMENTED
- (const char *)className; // CHANGE TO (PXString *) WHEN IMPLEMENTED
- (BOOL)isKindOfClass:(Class)class;
- (BOOL)isMemberOfClass:(Class)class;
diff --git a/src/Object.m b/src/Object.m
index 97b8997..2475be3 100644
--- a/src/Object.m
+++ b/src/Object.m
@@ -45,6 +45,18 @@
return class_getSuperclass([self class]);
}
++ (Class)class {
+ return self;
+}
+
++ (Class)superclass {
+ return class_getSuperclass(self);
+}
+
++ (const char *)className {
+ return class_getName(self);
+}
+
- (const char *)className {
return class_getName([self class]);
}
diff --git a/tests/Introspection.m b/tests/Introspection.m
new file mode 100644
index 0000000..d54cc0f
--- /dev/null
+++ b/tests/Introspection.m
@@ -0,0 +1,23 @@
+#include <Paradox/Core.h>
+#include <stdio.h>
+
+@interface MyClass : PXObject
+- (void)sayHello;
+@end
+
+@implementation MyClass
+
+- (void)sayHello {
+ printf("Hello!");
+}
+
+@end
+
+int main(void) {
+ printf("Object introspection test\n");
+ MyClass *instance = [MyClass new];
+ printf("class = %s\n", class_getName([instance class]));
+ printf("superclass = %s\n", class_getName([instance superclass]));
+ printf("className = %s\n", [instance className]);
+ printf("isMemberOfClass:MyClass = %s\n", [object isMemberOfClass:[MyClass class]]);
+}