mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
* Headers/gnustep/base/GSObjCRuntime.h:
* Source/Additions/GSObjCRuntime.m: Added typedef for GSIVar. (GSCGetInstanceVariableDefinition): New function. (GSObjCGetInstanceVariableDefinition): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@17168 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
14577e9418
commit
7d060e1290
3 changed files with 63 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2003-07-07 David Ayers <d.ayers@inode.at>
|
||||||
|
|
||||||
|
* Headers/gnustep/base/GSObjCRuntime.h:
|
||||||
|
* Source/Additions/GSObjCRuntime.m:
|
||||||
|
Added typedef for GSIVar.
|
||||||
|
(GSCGetInstanceVariableDefinition): New function.
|
||||||
|
(GSObjCGetInstanceVariableDefinition): Ditto.
|
||||||
|
|
||||||
2003-07-07 Richard Frith-Macdonald <rfm@gnu.org>
|
2003-07-07 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Source/Source/GSFFCallInvocation.m: gs_objc_msg_forward() trust the
|
* Source/Source/GSFFCallInvocation.m: gs_objc_msg_forward() trust the
|
||||||
|
|
|
@ -272,11 +272,12 @@ GSTypesFromSelector(SEL this)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unfortunately the definition of the symbol 'Method'
|
* Unfortunately the definition of the symbol 'Method' "IVar(_t)"
|
||||||
* is incompatible between the GNU and NeXT/Apple runtimes.
|
* is incompatible between the GNU and NeXT/Apple runtimes.
|
||||||
* We introduce GSMethod to allow portability.
|
* We introduce GSMethod and GSIVar to allow portability.
|
||||||
*/
|
*/
|
||||||
typedef struct objc_method *GSMethod;
|
typedef struct objc_method *GSMethod;
|
||||||
|
typedef struct objc_ivar *GSIVar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the pointer to the instance method structure
|
* Returns the pointer to the instance method structure
|
||||||
|
@ -365,6 +366,31 @@ GSFlushMethodCacheForClass (Class class)
|
||||||
__objc_update_dispatch_table_for_class (class);
|
__objc_update_dispatch_table_for_class (class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pointer to the instance variable structure
|
||||||
|
* for the instance variable name in the specified class.
|
||||||
|
* This function searches the specified class and its superclasses.<br/>
|
||||||
|
* It should be safe to use this function in +load implementations.<br/>
|
||||||
|
* This function should currently (June 2003) be considered WIP.
|
||||||
|
* Please follow potential changes (Name, parameters, ...) closely until
|
||||||
|
* it stabilizes.
|
||||||
|
*/
|
||||||
|
GS_EXPORT GSIVar
|
||||||
|
GSCGetInstanceVariableDefinition(Class class, const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pointer to the instance variable structure
|
||||||
|
* for the instance variable name in the specified class.
|
||||||
|
* This function searches the specified class and its superclasses.<br/>
|
||||||
|
* It is not necessarily safe to use this function
|
||||||
|
* in +load implementations.<br/>
|
||||||
|
* This function should currently (June 2003) be considered WIP.
|
||||||
|
* Please follow potential changes (Name, parameters, ...) closely until
|
||||||
|
* it stabilizes.
|
||||||
|
*/
|
||||||
|
GS_EXPORT GSIVar
|
||||||
|
GSObjCGetInstanceVariableDefinition(Class class, NSString *name);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the superclass of this.
|
* Returns the superclass of this.
|
||||||
|
|
|
@ -676,6 +676,33 @@ GSGetClassMethodNotInhertited (Class class, SEL sel)
|
||||||
return search_for_method_in_class (class->class_pointer, sel);
|
return search_for_method_in_class (class->class_pointer, sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* See header for documentation. */
|
||||||
|
GSIVar
|
||||||
|
GSCGetInstanceVariableDefinition(Class class, const char *name)
|
||||||
|
{
|
||||||
|
struct objc_ivar_list *list;
|
||||||
|
int i;
|
||||||
|
list = class->ivars;
|
||||||
|
for (i = 0; i < list->ivar_count; i++)
|
||||||
|
{
|
||||||
|
if (strcmp (list->ivar_list[i].ivar_name, name) == 0)
|
||||||
|
return &(list->ivar_list[i]);
|
||||||
|
}
|
||||||
|
class = GSObjCSuper(class);
|
||||||
|
if (class != 0)
|
||||||
|
{
|
||||||
|
return GSCGetInstanceVariableDefinition(class, name);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
GSIVar
|
||||||
|
GSObjCGetInstanceVariableDefinition(Class class, NSString *name)
|
||||||
|
{
|
||||||
|
return GSCGetInstanceVariableDefinition(class, [name cString]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>A Behavior can be seen as a "Protocol with an implementation" or a
|
* <p>A Behavior can be seen as a "Protocol with an implementation" or a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue