In libobjc/: 2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
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. From-SVN: r165531
This commit is contained in:
parent
2edb37a65e
commit
8437e063bc
|
@ -1,3 +1,14 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
|
2010-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
* objc-private/runtime.h (__objc_update_classes_with_methods): New.
|
* objc-private/runtime.h (__objc_update_classes_with_methods): New.
|
||||||
|
|
|
@ -228,3 +228,56 @@ struct objc_ivar ** class_copyIvarList (Class class_, unsigned int *numberOfRetu
|
||||||
|
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
property_getName (struct objc_property * property __attribute__ ((__unused__)))
|
||||||
|
{
|
||||||
|
if (property == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* TODO: New ABI. */
|
||||||
|
/* The current ABI does not have any information on properties. */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
property_getAttributes (struct objc_property * property __attribute__ ((__unused__)))
|
||||||
|
{
|
||||||
|
if (property == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* TODO: New ABI. */
|
||||||
|
/* The current ABI does not have any information on properties. */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct objc_property *
|
||||||
|
class_getProperty (Class class_ __attribute__ ((__unused__)),
|
||||||
|
const char *propertyName __attribute__ ((__unused__)))
|
||||||
|
{
|
||||||
|
if (class_ == NULL || propertyName == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* TODO: New ABI. */
|
||||||
|
/* The current ABI does not have any information on class properties. */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct objc_property **
|
||||||
|
class_copyPropertyList (Class class_ __attribute__ ((__unused__)),
|
||||||
|
unsigned int *numberOfReturnedProperties __attribute__ ((__unused__)))
|
||||||
|
{
|
||||||
|
if (class_ == Nil)
|
||||||
|
{
|
||||||
|
if (numberOfReturnedProperties)
|
||||||
|
*numberOfReturnedProperties = 0;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: New ABI. */
|
||||||
|
/* The current ABI does not have any information on class properties. */
|
||||||
|
if (numberOfReturnedProperties)
|
||||||
|
*numberOfReturnedProperties = 0;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
|
@ -305,6 +305,37 @@ objc_EXPORT const char * ivar_getTypeEncoding (Ivar variable);
|
||||||
will be filled with the number of instance variables returned. */
|
will be filled with the number of instance variables returned. */
|
||||||
objc_EXPORT Ivar * class_copyIvarList (Class class_, unsigned int *numberOfReturnedIvars);
|
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. */
|
/** Implementation: the following functions are in class.c. */
|
||||||
|
|
||||||
|
@ -422,6 +453,27 @@ objc_EXPORT void class_setVersion (Class class_, int version);
|
||||||
for all classes). */
|
for all classes). */
|
||||||
objc_EXPORT size_t class_getInstanceSize (Class class_);
|
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. */
|
/** 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,
|
objc_EXPORT void method_getArgumentType (Method method, unsigned int argumentNumber,
|
||||||
char *returnValue, size_t returnValueSize);
|
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. */
|
/** Implementation: the following functions are in protocols.c. */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue