summaryrefslogtreecommitdiff
path: root/Objective-C/libobjcl.h
diff options
context:
space:
mode:
Diffstat (limited to 'Objective-C/libobjcl.h')
-rw-r--r--Objective-C/libobjcl.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/Objective-C/libobjcl.h b/Objective-C/libobjcl.h
new file mode 100644
index 0000000..4d6d092
--- /dev/null
+++ b/Objective-C/libobjcl.h
@@ -0,0 +1,62 @@
+/* -*- mode: objc; coding: utf-8 -*- */
+
+#import "Foundation/Foundation.h"
+#include <objc/objc-api.h>
+
+typedef struct objcl_object
+{
+ char* type;
+
+ union
+ {
+ id id_val;
+ Class class_val;
+ NSException *exc_val;
+ SEL sel_val;
+ char char_val;
+ short short_val;
+ int int_val;
+ long long_val;
+ long long long_long_val;
+ float float_val;
+ double double_val;
+ BOOL bool_val;
+ char *charptr_val;
+ void *ptr_val;
+ } data;
+} *OBJCL_OBJ_DATA;
+
+
+#define EXCEPTION_TYPESPEC "ERROR"
+
+
+void
+objcl_initialise_runtime (void);
+
+void
+objcl_shutdown_runtime (void);
+
+void *
+objcl_invoke_instance_method (OBJCL_OBJ_DATA receiver,
+ const char *method_name,
+ int argc,
+ ...);
+
+void *
+objcl_invoke_class_method (OBJCL_OBJ_DATA class,
+ const char *method_name,
+ int argc,
+ ...);
+
+void *
+objcl_find_class (const char *class_name);
+
+/* Return a null-terminated list of type information strings.
+ The first entry describes the type of the method's return value. */
+char **
+objcl_query_arglist_info (void *receiver,
+ const char *method_name);
+
+
+const char *
+objcl_class_name (OBJCL_OBJ_DATA class);