summaryrefslogtreecommitdiff
path: root/libobjc/ivars.c
diff options
context:
space:
mode:
authornicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-12 18:43:54 +0000
committernicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-12 18:43:54 +0000
commitf75aa15889d4afbf4944da0dc3dba5ba3c21a0c1 (patch)
treeb4d41623d7f15f6d47b2a7f3c02ac077462df0f9 /libobjc/ivars.c
parenta10fc41a0de5e88df4bfeeda0b72f41101232913 (diff)
downloadgcc-f75aa15889d4afbf4944da0dc3dba5ba3c21a0c1.tar.gz
In libobjc/:
2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com> * class.c: Include objc/runtime.h and objc-private/module-abi-8.h instead of objc/objc-api.h. (objc_get_unknown_class_handler): Do not define. (class_isMetaClass): New. (class_getSuperclass): New. (class_getVersion): New. (class_setVersion): New. (class_getInstanceSize): New. * exceptions.c: Include objc/runtime.h instead of objc/objc-api.h. (is_kind_of_exception_matcher): Use objc_getSuperclass instead of objc_get_super_class. (get_ttype_entry): Use objc_getRequiredClass instead of objc_get_class. * ivars.c (class_getClassVariable): New. * objects.c: Include objc/runtime.h, objc/thr.h and objc-private/module-abi-8.h instead of objc/objc-api.h * objc/runtime.h (class_getClassVariable): New. (class_isMetaClass): New. (class_getSuperclass): New. (class_getVersion): New. (class_setVersion): New. (class_getInstanceSize): New. * objc-private/module-abi-8.h (HOST_BITS_PER_LONG): New (from objc/objc-api.h) (__CLS_INFO): Same. (__CLS_ISINFO): Same. (__CLS_SETINFO): Same. (CLS_ISMETA): Same. (CLS_ISCLASS): Same. (CLS_ISRESOLV): Same. (CLS_SETRESOLV): Same. (CLS_ISINITIALIZED): Same. (CLS_SETINITIALIZED): Same. (CLS_GETNUMBER): Same. (CLS_SETNUMBER): Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165392 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libobjc/ivars.c')
-rw-r--r--libobjc/ivars.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libobjc/ivars.c b/libobjc/ivars.c
index 061fa211fa8..52b71af1124 100644
--- a/libobjc/ivars.c
+++ b/libobjc/ivars.c
@@ -60,6 +60,25 @@ class_getInstanceVariable (Class class_, const char *name)
return NULL;
}
+struct objc_ivar *
+class_getClassVariable (Class class_, const char *name)
+{
+ if (class_ == Nil)
+ return NULL;
+
+ /* Logically, since a class is an instance of its meta-class, and
+ since its class methods are the instance methods of the
+ meta-class, class variables should be instance variables of the
+ meta-class. That is different from the normal use of having
+ 'static' variables in the class implementation file, because
+ every class would have its own variables.
+
+ Anyway, it is all speculative at this stage, but if we get class
+ variables in Objective-C, it is conceivable that this
+ implementation should work. */
+ return class_getInstanceVariable (class_->class_pointer, name);
+}
+
void *
object_getIndexedIvars (id object)
{