summaryrefslogtreecommitdiff
path: root/libobjc/objc
diff options
context:
space:
mode:
authornicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-15 23:42:02 +0000
committernicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-15 23:42:02 +0000
commitad337f1d435385c3dbdd7a46796778b95688b699 (patch)
tree1748b6dad2e0a551aadb4ac306897ff4d594c4f2 /libobjc/objc
parent4028020e9f517e272f3f9889d35f74cac6bbbb29 (diff)
downloadgcc-ad337f1d435385c3dbdd7a46796778b95688b699.tar.gz
In libobjc/:
2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com> * objc/runtime.h (class_copyPropertyList): New. (class_getProperty): New. (property_getAttributes): New. (property_getName): New. * ivars.c (class_copyPropertyList): New. (class_getProperty): New. (property_getAttributes): New. (property_getName): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165531 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libobjc/objc')
-rw-r--r--libobjc/objc/runtime.h72
1 files changed, 52 insertions, 20 deletions
diff --git a/libobjc/objc/runtime.h b/libobjc/objc/runtime.h
index bb241acd5b3..27ecabf8850 100644
--- a/libobjc/objc/runtime.h
+++ b/libobjc/objc/runtime.h
@@ -305,6 +305,37 @@ objc_EXPORT const char * ivar_getTypeEncoding (Ivar variable);
will be filled with the number of instance variables returned. */
objc_EXPORT Ivar * class_copyIvarList (Class class_, unsigned int *numberOfReturnedIvars);
+/* Return the name of the property. Return NULL if 'property' is
+ NULL. */
+objc_EXPORT const char * property_getName (Property property);
+
+/* Return the attributes of the property as a string. Return NULL if
+ 'property' is NULL. */
+objc_EXPORT const char * property_getAttributes (Property property);
+
+/* Return the property with name 'propertyName' of the class 'class_'.
+ This function returns NULL if the required property can not be
+ found. Return NULL if 'class_' or 'propertyName' is NULL.
+
+ Note that the traditional ABI does not store the list of properties
+ of a class in a compiled module, so the traditional ABI will always
+ return NULL. */
+objc_EXPORT Property class_getProperty (Class class_, const char *propertyName);
+
+/* Return all the properties of the class. The return value
+ of the function is a pointer to an area, allocated with malloc(),
+ that contains all the properties of the class. It does not
+ include properties of superclasses. The list is terminated
+ by NULL. Optionally, if you pass a non-NULL
+ 'numberOfReturnedIvars' pointer, the unsigned int that it points to
+ will be filled with the number of properties returned.
+
+ Note that the traditional ABI does not store the list of properties
+ of a class in a compiled module, so the traditional ABI will always
+ return an empty list. */
+objc_EXPORT Property * class_copyPropertyList
+(Class class_, unsigned int *numberOfReturnedProperties);
+
/** Implementation: the following functions are in class.c. */
@@ -422,6 +453,27 @@ objc_EXPORT void class_setVersion (Class class_, int version);
for all classes). */
objc_EXPORT size_t class_getInstanceSize (Class class_);
+/* Change the implementation of the method. It also searches all
+ classes for any class implementing the method, and replaces the
+ existing implementation with the new one. For that to work,
+ 'method' must be a method returned by class_getInstanceMethod() or
+ class_getClassMethod() as the matching is done by comparing the
+ pointers; in that case, only the implementation in the class is
+ modified. Return the previous implementation that has been
+ replaced. If method or implementation is NULL, do nothing and
+ return NULL. */
+objc_EXPORT IMP
+method_setImplementation (Method method, IMP implementation);
+
+/* Swap the implementation of two methods in a single, atomic
+ operation. This is equivalent to getting the implementation of
+ each method and then calling method_setImplementation() on the
+ other one. For this to work, the two methods must have been
+ returned by class_getInstanceMethod() or class_getClassMethod().
+ If 'method_a' or 'method_b' is NULL, do nothing. */
+objc_EXPORT void
+method_exchangeImplementations (Method method_a, Method method_b);
+
/** Implementation: the following functions are in sendmsg.c. */
@@ -545,26 +597,6 @@ objc_EXPORT void method_getReturnType (Method method, char *returnValue,
objc_EXPORT void method_getArgumentType (Method method, unsigned int argumentNumber,
char *returnValue, size_t returnValueSize);
-/* Change the implementation of the method. It also searches all
- classes for any class implementing the method, and replaces the
- existing implementation with the new one. For that to work,
- 'method' must be a method returned by class_getInstanceMethod() or
- class_getClassMethod() as the matching is done by comparing the
- pointers; in that case, only the implementation in the class is
- modified. Return the previous implementation that has been
- replaced. If method or implementation is NULL, do nothing and
- return NULL. */
-objc_EXPORT IMP
-method_setImplementation (Method method, IMP implementation);
-
-/* Swap the implementation of two methods in a single, atomic
- operation. This is equivalent to getting the implementation of
- each method and then calling method_setImplementation() on the
- other one. For this to work, the two methods must have been
- returned by class_getInstanceMethod() or class_getClassMethod().
- If 'method_a' or 'method_b' is NULL, do nothing. */
-objc_EXPORT void
-method_exchangeImplementations (Method method_a, Method method_b);
/** Implementation: the following functions are in protocols.c. */