Up

Functions

Authors

Richard Frith-Macdonald

Contents -

  1. Function index
  2. Macro index
  3. GSCategories functions
  4. GSIArray functions
  5. GSIMap functions
  6. behavior functions
  7. Unicode functions
  8. GSObjCRuntime macros

Function index

Function

Macro index

Macro

GSCategories functions

GSCurrentThread

NSThread* GSCurrentThread();

Description forthcoming.


GSCurrentThreadDictionary

NSMutableDictionary* GSCurrentThreadDictionary();

Description forthcoming.


GSDebugFunctionMsg

NSString* GSDebugFunctionMsg(const char* func, const char* file, int line, NSString* fmt);

Description forthcoming.


GSDebugMethodMsg

NSString* GSDebugMethodMsg(id obj, SEL sel, const char* file, int line, NSString* fmt);

Description forthcoming.


GSDebugSet

BOOL GSDebugSet(NSString* level);

Description forthcoming.


GSEncodingName

NSString* GSEncodingName(NSStringEncoding availableEncodingValue);

Description forthcoming.


GetEncodingName

NSString* GetEncodingName(NSStringEncoding availableEncodingValue);

Description forthcoming.


NSDecimalFromComponents

void NSDecimalFromComponents(NSDecimal* result, unsigned long long int mantissa, short int exponent, BOOL negative);

Description forthcoming.


NSStandardLibraryPaths

NSArray* NSStandardLibraryPaths();

Description forthcoming.


GSIArray functions

GSIArrayAddItem

void GSIArrayAddItem(GSIArray array, GSIArrayItem item);

Description forthcoming.


GSIArrayAddItemNoRetain

void GSIArrayAddItemNoRetain(GSIArray array, GSIArrayItem item);

Description forthcoming.


GSIArrayCapacity

unsigned int GSIArrayCapacity(GSIArray array);

Description forthcoming.


GSIArrayCheckSort

void GSIArrayCheckSort(GSIArray array, NSComparisonResult(*) sorter);

Description forthcoming.


GSIArrayClear

void GSIArrayClear(GSIArray array);

Description forthcoming.


GSIArrayCopyWithZone

GSIArray GSIArrayCopyWithZone(GSIArray array, NSZone* zone);

Description forthcoming.


GSIArrayCount

unsigned int GSIArrayCount(GSIArray array);

Description forthcoming.


GSIArrayEmpty

void GSIArrayEmpty(GSIArray array);

Description forthcoming.


GSIArrayGrow

void GSIArrayGrow(GSIArray array);

Description forthcoming.


GSIArrayGrowTo

void GSIArrayGrowTo(GSIArray array, unsigned int next);

Description forthcoming.


GSIArrayInitWithZoneAndCapacity

GSIArray GSIArrayInitWithZoneAndCapacity(GSIArray array, NSZone* zone, size_t capacity);

Description forthcoming.


GSIArrayInitWithZoneAndStaticCapacity

GSIArray GSIArrayInitWithZoneAndStaticCapacity(GSIArray array, NSZone* zone, size_t capacity, GSIArrayItem* buffer);

Description forthcoming.


GSIArrayInsertItem

void GSIArrayInsertItem(GSIArray array, GSIArrayItem item, unsigned int index);

Description forthcoming.


GSIArrayInsertItemNoRetain

void GSIArrayInsertItemNoRetain(GSIArray array, GSIArrayItem item, unsigned int index);

Description forthcoming.


GSIArrayInsertSorted

void GSIArrayInsertSorted(GSIArray array, GSIArrayItem item, NSComparisonResult(*) sorter);

Description forthcoming.


GSIArrayInsertSortedNoRetain

void GSIArrayInsertSortedNoRetain(GSIArray array, GSIArrayItem item, NSComparisonResult(*) sorter);

Description forthcoming.


GSIArrayInsertionPosition

unsigned int GSIArrayInsertionPosition(GSIArray array, GSIArrayItem item, NSComparisonResult(*) sorter);

Description forthcoming.


GSIArrayItemAtIndex

GSIArrayItem GSIArrayItemAtIndex(GSIArray array, unsigned int index);

Description forthcoming.


GSIArrayItems

GSIArrayItem* GSIArrayItems(GSIArray array);

Description forthcoming.


GSIArrayLastItem

GSIArrayItem GSIArrayLastItem(GSIArray array);

Description forthcoming.


GSIArrayRemoveAllItems

void GSIArrayRemoveAllItems(GSIArray array);

Description forthcoming.


GSIArrayRemoveItemAtIndex

void GSIArrayRemoveItemAtIndex(GSIArray array, unsigned int index);

Description forthcoming.


GSIArrayRemoveItemAtIndexNoRelease

void GSIArrayRemoveItemAtIndexNoRelease(GSIArray array, unsigned int index);

Description forthcoming.


GSIArrayRemoveItemsFromIndex

void GSIArrayRemoveItemsFromIndex(GSIArray array, unsigned int index);

Description forthcoming.


GSIArrayRemoveLastItem

void GSIArrayRemoveLastItem(GSIArray array);

Description forthcoming.


GSIArraySetItemAtIndex

void GSIArraySetItemAtIndex(GSIArray array, GSIArrayItem item, unsigned int index);

Description forthcoming.


GSIMap functions

GSIMapAddKey

GSIMapNode GSIMapAddKey(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapAddKeyNoRetain

GSIMapNode GSIMapAddKeyNoRetain(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapAddNodeToBucket

void GSIMapAddNodeToBucket(GSIMapBucket bucket, GSIMapNode node);

Description forthcoming.


GSIMapAddNodeToMap

void GSIMapAddNodeToMap(GSIMapTable map, GSIMapNode node);

Description forthcoming.


GSIMapAddPair

GSIMapNode GSIMapAddPair(GSIMapTable map, GSIMapKey key, GSIMapVal value);

Description forthcoming.


GSIMapAddPairNoRetain

GSIMapNode GSIMapAddPairNoRetain(GSIMapTable map, GSIMapKey key, GSIMapVal value);

Description forthcoming.


GSIMapBucketForKey

GSIMapBucket GSIMapBucketForKey(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapCleanMap

void GSIMapCleanMap(GSIMapTable map);

Description forthcoming.


GSIMapEmptyMap

void GSIMapEmptyMap(GSIMapTable map);

Description forthcoming.


GSIMapEndEnumerator

void GSIMapEndEnumerator(GSIMapEnumerator enumerator);

Tidies up after map enumeration... effectively destroys the enumerator.


GSIMapEnumeratorBucket

GSIMapBucket GSIMapEnumeratorBucket(GSIMapEnumerator enumerator);

Returns the bucket from which the next node in the enumeration will come. Once the next node has been enumerated, you can use the bucket and node to remove the node from the map using the GSIMapRemoveNodeFromMap() function.


GSIMapEnumeratorForMap

GSIMapEnumerator_t GSIMapEnumeratorForMap(GSIMapTable map);

Enumerating
Create an return an enumerator for the specified map.
You must call GSIMapEndEnumerator() when you have finished with the enumerator.
WARNING You should not alter a map while an enumeration is in progress. The results of doing so are reasonably unpredictable.
Remember, DON'T MESS WITH A MAP WHILE YOU'RE ENUMERATING IT.


GSIMapEnumeratorNextNode

GSIMapNode GSIMapEnumeratorNextNode(GSIMapEnumerator enumerator);

Returns the next node in the map, or a nul pointer if at the end.


GSIMapFreeNode

void GSIMapFreeNode(GSIMapTable map, GSIMapNode node);

Description forthcoming.


GSIMapInitWithZoneAndCapacity

void GSIMapInitWithZoneAndCapacity(GSIMapTable map, NSZone* zone, size_t capacity);

Description forthcoming.


GSIMapLinkNodeIntoBucket

void GSIMapLinkNodeIntoBucket(GSIMapBucket bucket, GSIMapNode node);

Description forthcoming.


GSIMapMoreNodes

void GSIMapMoreNodes(GSIMapTable map, unsigned int required);

Description forthcoming.


GSIMapNewNode

GSIMapNode GSIMapNewNode(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapNodeForKey

GSIMapNode GSIMapNodeForKey(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapNodeForKeyInBucket

GSIMapNode GSIMapNodeForKeyInBucket(GSIMapTable map, GSIMapBucket bucket, GSIMapKey key);

Description forthcoming.


GSIMapNodeForSimpleKey

GSIMapNode GSIMapNodeForSimpleKey(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapPickBucket

GSIMapBucket GSIMapPickBucket(unsigned int hash, GSIMapBucket buckets, size_t bucketCount);

Description forthcoming.


GSIMapRemangleBuckets

void GSIMapRemangleBuckets(GSIMapTable map, GSIMapBucket old_buckets, size_t old_bucketCount, GSIMapBucket new_buckets, size_t new_bucketCount);

Description forthcoming.


GSIMapRemoveKey

void GSIMapRemoveKey(GSIMapTable map, GSIMapKey key);

Description forthcoming.


GSIMapRemoveNodeFromBucket

void GSIMapRemoveNodeFromBucket(GSIMapBucket bucket, GSIMapNode node);

Description forthcoming.


GSIMapRemoveNodeFromMap

void GSIMapRemoveNodeFromMap(GSIMapTable map, GSIMapBucket bkt, GSIMapNode node);

Description forthcoming.


GSIMapResize

void GSIMapResize(GSIMapTable map, size_t new_capacity);

Description forthcoming.


GSIMapRightSizeMap

void GSIMapRightSizeMap(GSIMapTable map, size_t capacity);

Description forthcoming.


GSIMapUnlinkNodeFromBucket

void GSIMapUnlinkNodeFromBucket(GSIMapBucket bucket, GSIMapNode node);

Description forthcoming.


behavior functions

behavior_class_add_category

void behavior_class_add_category(Class class, struct objc_category* category);

Description forthcoming.


behavior_class_add_class

void behavior_class_add_class(Class class, Class behavior);

Description forthcoming.


behavior_class_add_methods

void behavior_class_add_methods(Class class, struct objc_method_list* methods);

Description forthcoming.


behavior_set_debug

void behavior_set_debug(int i);

Description forthcoming.


Unicode functions

GSEncodingForRegistry

NSStringEncoding GSEncodingForRegistry(NSString* registry, NSString* encoding);

Returns the NSStringEncoding that matches the specified character set registry and encoding information. For instance, for the iso8859-5 character set, the registry is iso8859 and the encoding is 5, and the returned NSStringEncoding is NSISOCyrillicStringEncoding. If there is no specific encoding, use @"0". Returns GSUndefinedEncoding if there is no match.


GSEncodingFromLocale

NSStringEncoding GSEncodingFromLocale(const char* clocale);

Try to deduce the string encoding from the locale string clocale. This function looks in the Locale.encodings file installed as part of GNUstep Base if the encoding cannot be deduced from the clocale string itself. If clocale isn't set or no match can be found, returns GSUndefinedEncoding.


GSEncodingName

NSString* GSEncodingName(NSStringEncoding encoding);

Description forthcoming.


GSFromUnicode

BOOL GSFromUnicode(unsigned char** dst, unsigned int* size, const unichar* src, unsigned int slen, NSStringEncoding enc, NSZone* zone, unsigned int options);

Function to convert from 16-bit unicode to 8-bit data.

The dst argument is a pointer to a pointer to a buffer in which the converted data is to be stored. If it is a null pointer, this function discards converted data, and is used only to determine the length of the converted data. If the zone argument is non-nul, the function is free to allocate a larger buffer if necessary, and store this new buffer in the dst argument. It will *NOT* deallocate the original buffer!

The size argument is a pointer to the initial size of the destination buffer. If the function changes the buffer size, this value will be altered to the new size. This is measured in bytes.

The src argument is a pointer to the 16-bit unicode string which is to be converted to 8-bit data.

The slen argument is the length of the 16-bit unicode string which is to be converted to 8-bit data. This is measured in 16-bit characters, not bytes.

The enc argument specifies the encoding type of the 8-bit byte sequence which is to be produced from the 16-bit unicode.

The zone argument specifies a memory zone in which the function may allocate a buffer to return data in. If this is nul, the function will fail if the originally supplied buffer is not big enough (unless dst is a null pointer... indicating that converted data is to be discarded).

The options argument controls some special behavior.

On return, the function result is a flag indicating success (YES) or failure ( NO), and on success, the value stored in size is the number of bytes in the converted data. The converted data itself is stored in the location given by dst.
NB. If the value stored in dst has been changed, it is a pointer to allocated memory which the caller is responsible for freeing, and the caller is still responsible for freeing the original buffer.


GSToUnicode

BOOL GSToUnicode(unichar** dst, unsigned int* size, const unsigned char* src, unsigned int slen, NSStringEncoding enc, NSZone* zone, unsigned int options);

Function to convert from 8-bit data to 16-bit unicode characters.

The dst argument is a pointer to a pointer to a buffer in which the converted string is to be stored. If it is a null pointer, this function discards converted data, and is used only to determine the length of the converted string. If the zone argument is non-nul, the function is free to allocate a larger buffer if necessary, and store this new buffer in the dst argument. It will *NOT* deallocate the original buffer!

The size argument is a pointer to the initial size of the destination buffer. If the function changes the buffer size, this value will be altered to the new size. This is measured in 16-bit unicode characters, not bytes.

The src argument is a pointer to the byte sequence which is to be converted to 16-bit unicode.

The slen argument is the length of the byte sequence which is to be converted to 16-bit unicode. This is measured in bytes.

The enc argument specifies the encoding type of the 8-bit byte sequence which is to be converted to 16-bit unicode.

The zone argument specifies a memory zone in which the function may allocate a buffer to return data in. If this is nul, the function will fail if the originally supplied buffer is not big enough (unless dst is a null pointer... indicating that converted data is to be discarded).

The options argument controls some special behavior.

On return, the function result is a flag indicating success (YES) or failure ( NO), and on success, the value stored in size is the number of characters in the converted string. The converted string itself is stored in the location given by dst.
NB. If the value stored in dst has been changed, it is a pointer to allocated memory which the caller is responsible for freeing, and the caller is still responsible for freeing the original buffer.


GetAvailableEncodings

NSStringEncoding* GetAvailableEncodings();

Returns a nul terminated array of the available string encodings.


GetDefEncoding

NSStringEncoding GetDefEncoding();

Return the default encoding


GetEncodingName

NSString* GetEncodingName(NSStringEncoding encoding);

Description forthcoming.


chartouni

unichar chartouni(unsigned char c);

deprecated See GSToUnicode() and GSFromUnicode()


encode_chartouni

unichar encode_chartouni(unsigned char c, NSStringEncoding enc);

deprecated See GSToUnicode() and GSFromUnicode()


encode_cstrtoustr

int encode_cstrtoustr(unichar* dst, int dl, const char* src, int sl, NSStringEncoding enc);

deprecated See GSToUnicode() and GSFromUnicode()


encode_unitochar

unsigned char encode_unitochar(unichar u, NSStringEncoding enc);

deprecated See GSToUnicode() and GSFromUnicode()


encode_unitochar_strict

unsigned int encode_unitochar_strict(unichar u, NSStringEncoding enc);

deprecated See GSToUnicode() and GSFromUnicode()


encode_ustrtocstr

int encode_ustrtocstr(char* dst, int dl, const unichar* src, int sl, NSStringEncoding enc, BOOL strict);

deprecated See GSToUnicode() and GSFromUnicode()


uni_cop

unsigned char uni_cop(unichar u);

Description forthcoming.


uni_is_decomp

unichar* uni_is_decomp(unichar u);

Description forthcoming.


uni_isnonsp

BOOL uni_isnonsp(unichar u);

Description forthcoming.


uni_tolower

unichar uni_tolower(unichar ch);

Uses direct access into a two-level table to map cases.
The two-level table method is less space efficient (but still not bad) than a single table and a linear search, but it reduces the number of conditional statements to just one.


uni_toupper

unichar uni_toupper(unichar ch);

Uses direct access into a two-level table to map cases.
The two-level table method is less space efficient (but still not bad) than a single table and a linear search, but it reduces the number of conditional statements to just one.


unitochar

unsigned char unitochar(unichar u);

deprecated See GSToUnicode() and GSFromUnicode()


GSObjCRuntime macros

GS_MAX_OBJECTS_FROM_STACK

GS_MAX_OBJECTS_FROM_STACK

Fills a nil terminated array of Class objects referenced by buffer with max number of classes registered with the objc runtime. The provided buffer must be large enough to hold max + 1 Class objects. If buffer is nil, the function returns the number of Class objects that would be inserted if the buffer is large enough. Otherwise returns the number of Class objects that did not fit into the provided buffer. This function keeps a cache of the class list for future invocations when used with the GNU runtime. If clearCache is YES, this cache will be invalidated and rebuild. The flag has no effect for the NeXT runtime. This function is provided as consistent API to both runtimes. In the case of the GNU runtime it is likely more efficient to use objc_next_class() to iterate over the classes.
GSObjCClass() return the class of an instance. Returns a nul pointer if the argument is nil.
Returns the superclass of this.
GSObjCIsInstance() tests to see if an id is an instance. Returns NO if the argument is nil.
GSObjCIsClass() tests to see if an id is a class. Returns NO if the argument is nil.
GSObjCIsKindOf() tests to see if a class inherits from another class The argument to this function must NOT be nil.
Given a class name, return the corresponding class or a nul pointer if the class cannot be found.
If the argument is nil, return a nul pointer.
Return the name of the supplied class, or a nul pointer if no class was supplied.
Return the name of the object's class, or a nul pointer if no object was supplied.
Return the name of the supplied selector, or a nul pointer if no selector was supplied.
Return a selector matching the specified name, or nil if no name is supplied. The returned selector could be any one with the name.
If no selector exists, returns nil.
Return the selector for the specified name and types. Returns a nul pointer if the name is nul. Uses any available selector if the types argument is nul.
Creates a new selector if necessary.
Return the type information from the specified selector. May return a nul pointer if the selector was a nul pointer or if it was not typed.
Compare only the type information ignoring qualifiers, the frame layout and register markers. Unlike sel_types_match, this function also handles comparisons of types with and without any layout information.
Returns a protocol object with the corresponding name. This function searches the registered classes for any protocol with the supplied name. If one is found, it is cached in for future requests. If efficiency is a factor then use GSRegisterProtocol() to insert a protocol explicitly into the cache used by this function. If no protocol is found this function returns nil.
Registers proto in the cache used by GSProtocolFromName() .
Returns the pointer to the method structure for the selector in the specified class. Depending on searchInstanceMethods, this function searches either instance or class methods. Depending on searchSuperClassesm this function searches either the specified class only or also its superclasses.
To obtain the implementation pointer IMP use returnValue->method_imp which should be safe across all runtimes.
It should be safe to use this function in +load implementations.
This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
Flushes the cached method dispatch table for the class. Call this function after any manipulations in the method structures.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It is not necessarily safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a pointer to objc_malloc'ed memory large enough to hold a struct objc_method_list with 'count' number of struct objc_method entries. The memory returned is initialized with 0, including the method count and next method list fields.

This function is intended for use in conjunction with GSAppendMethodToList() to fill the memory and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Inserts the method described by sel, types and imp into the slot of the list's method_count incremented by 1. This function does not and cannot check whether the list provided has the necessary capacity.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

This function is intended for use in conjunction with GSAllocMethodList() to allocate the list and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method identified by sel from the method list moving the following methods up in the list, leaving the last entry blank. After this call, all references of previous GSMethodFromList() calls with this list should be considered invalid. If the values they referenced are needed, they must be copied to external buffers before this function is called.

Returns YES if the a matching method was found a removed, NO otherwise.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a method list of the class that contains the selector. Depending on searchInstanceMethods either instance or class methods are searched. Returns NULL if none are found. This function does not search the superclasses method lists. Call this method with the address of a void * pointing to NULL to obtain the first (active) method list containing the selector. Subsequent calls will return further method lists which contain the selector. If none are found, it returns NULL. You may instead pass NULL as the iterator in which case the first method list containing the selector will be returned. Do not call it with an uninitialized iterator. If either class or selector are NULL the function returns NULL. If subsequent calls to this function with the same non-NULL iterator yet different searchInstanceMethods value are called, the behavior is undefined.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the (first) GSMethod contained in the supplied list that corresponds to sel. Returns NULL if none is found.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

Add the method list to the class as the first list to be searched during method invocation for the given class. Depending on toInstanceMethods, this list will be added as an instance or a class method list. If the list is in use by another class, behavior is undefined. Create a new list with GSAllocMethodList() or use GSRemoveMethodList() to remove a list before inserting it in a class.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method list from the classes instance or class method lists depending on fromInstanceMethods. If the list is not part of the class, behavior is undefined.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the version number of this.
Return the zone in which an object belongs, without using the zone method
Quickly return autoreleased data storage area.
Allocate a new objc_mutex_t and store it in the location pointed to by request. A mutex is only created if the value pointed to by request is NULL. This function is thread safe in the sense that multiple threads my call this function with the same value of request and only one will actually set the mutex. It is the users responsibility that no one else attempts to set the mutex pointed to. This function should be used with objc_mutex_t variables which were statically initialized to NULL like:

 void function (void)
 {
   static objc_mutex_t my_lock = NULL;
   if (my_lock == NULL)
     GSAllocateMutexAt(&my_lock);
   objc_mutex_lock(my_lock);
   do_work ();
   objc_mutex_unlock(my_lock);
 }
 

Returns a system error message on a variety of systems

Prints a message to fptr using the format string provided and any additional arguments. The format string is interpreted as by the NSString formatted initialisers, and understands the '%@' syntax for printing an object.

The data is written to the file pointer in the default CString encoding if possible, as a UTF8 string otherwise.

This function is recommended for printing general log messages. For debug messages use NSDebugLog() and friends. For error logging use NSLog() , and for warnings you might consider NSWarnLog() .

## deprecated ##
## deprecated ##
## deprecated ##
The number of objects to try to get from varargs into an array on the stack... if there are more than this, use the heap. NB. This MUST be a multiple of 2


GS_USEIDLIST

GS_USEIDLIST(firstObject, code,...)

Fills a nil terminated array of Class objects referenced by buffer with max number of classes registered with the objc runtime. The provided buffer must be large enough to hold max + 1 Class objects. If buffer is nil, the function returns the number of Class objects that would be inserted if the buffer is large enough. Otherwise returns the number of Class objects that did not fit into the provided buffer. This function keeps a cache of the class list for future invocations when used with the GNU runtime. If clearCache is YES, this cache will be invalidated and rebuild. The flag has no effect for the NeXT runtime. This function is provided as consistent API to both runtimes. In the case of the GNU runtime it is likely more efficient to use objc_next_class() to iterate over the classes.
GSObjCClass() return the class of an instance. Returns a nul pointer if the argument is nil.
Returns the superclass of this.
GSObjCIsInstance() tests to see if an id is an instance. Returns NO if the argument is nil.
GSObjCIsClass() tests to see if an id is a class. Returns NO if the argument is nil.
GSObjCIsKindOf() tests to see if a class inherits from another class The argument to this function must NOT be nil.
Given a class name, return the corresponding class or a nul pointer if the class cannot be found.
If the argument is nil, return a nul pointer.
Return the name of the supplied class, or a nul pointer if no class was supplied.
Return the name of the object's class, or a nul pointer if no object was supplied.
Return the name of the supplied selector, or a nul pointer if no selector was supplied.
Return a selector matching the specified name, or nil if no name is supplied. The returned selector could be any one with the name.
If no selector exists, returns nil.
Return the selector for the specified name and types. Returns a nul pointer if the name is nul. Uses any available selector if the types argument is nul.
Creates a new selector if necessary.
Return the type information from the specified selector. May return a nul pointer if the selector was a nul pointer or if it was not typed.
Compare only the type information ignoring qualifiers, the frame layout and register markers. Unlike sel_types_match, this function also handles comparisons of types with and without any layout information.
Returns a protocol object with the corresponding name. This function searches the registered classes for any protocol with the supplied name. If one is found, it is cached in for future requests. If efficiency is a factor then use GSRegisterProtocol() to insert a protocol explicitly into the cache used by this function. If no protocol is found this function returns nil.
Registers proto in the cache used by GSProtocolFromName() .
Returns the pointer to the method structure for the selector in the specified class. Depending on searchInstanceMethods, this function searches either instance or class methods. Depending on searchSuperClassesm this function searches either the specified class only or also its superclasses.
To obtain the implementation pointer IMP use returnValue->method_imp which should be safe across all runtimes.
It should be safe to use this function in +load implementations.
This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
Flushes the cached method dispatch table for the class. Call this function after any manipulations in the method structures.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It is not necessarily safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a pointer to objc_malloc'ed memory large enough to hold a struct objc_method_list with 'count' number of struct objc_method entries. The memory returned is initialized with 0, including the method count and next method list fields.

This function is intended for use in conjunction with GSAppendMethodToList() to fill the memory and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Inserts the method described by sel, types and imp into the slot of the list's method_count incremented by 1. This function does not and cannot check whether the list provided has the necessary capacity.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

This function is intended for use in conjunction with GSAllocMethodList() to allocate the list and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method identified by sel from the method list moving the following methods up in the list, leaving the last entry blank. After this call, all references of previous GSMethodFromList() calls with this list should be considered invalid. If the values they referenced are needed, they must be copied to external buffers before this function is called.

Returns YES if the a matching method was found a removed, NO otherwise.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a method list of the class that contains the selector. Depending on searchInstanceMethods either instance or class methods are searched. Returns NULL if none are found. This function does not search the superclasses method lists. Call this method with the address of a void * pointing to NULL to obtain the first (active) method list containing the selector. Subsequent calls will return further method lists which contain the selector. If none are found, it returns NULL. You may instead pass NULL as the iterator in which case the first method list containing the selector will be returned. Do not call it with an uninitialized iterator. If either class or selector are NULL the function returns NULL. If subsequent calls to this function with the same non-NULL iterator yet different searchInstanceMethods value are called, the behavior is undefined.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the (first) GSMethod contained in the supplied list that corresponds to sel. Returns NULL if none is found.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

Add the method list to the class as the first list to be searched during method invocation for the given class. Depending on toInstanceMethods, this list will be added as an instance or a class method list. If the list is in use by another class, behavior is undefined. Create a new list with GSAllocMethodList() or use GSRemoveMethodList() to remove a list before inserting it in a class.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method list from the classes instance or class method lists depending on fromInstanceMethods. If the list is not part of the class, behavior is undefined.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the version number of this.
Return the zone in which an object belongs, without using the zone method
Quickly return autoreleased data storage area.
Allocate a new objc_mutex_t and store it in the location pointed to by request. A mutex is only created if the value pointed to by request is NULL. This function is thread safe in the sense that multiple threads my call this function with the same value of request and only one will actually set the mutex. It is the users responsibility that no one else attempts to set the mutex pointed to. This function should be used with objc_mutex_t variables which were statically initialized to NULL like:

 void function (void)
 {
   static objc_mutex_t my_lock = NULL;
   if (my_lock == NULL)
     GSAllocateMutexAt(&my_lock);
   objc_mutex_lock(my_lock);
   do_work ();
   objc_mutex_unlock(my_lock);
 }
 

Returns a system error message on a variety of systems

Prints a message to fptr using the format string provided and any additional arguments. The format string is interpreted as by the NSString formatted initialisers, and understands the '%@' syntax for printing an object.

The data is written to the file pointer in the default CString encoding if possible, as a UTF8 string otherwise.

This function is recommended for printing general log messages. For debug messages use NSDebugLog() and friends. For error logging use NSLog() , and for warnings you might consider NSWarnLog() .

## deprecated ##
## deprecated ##
## deprecated ##
The number of objects to try to get from varargs into an array on the stack... if there are more than this, use the heap. NB. This MUST be a multiple of 2

This is a macro designed to minimise the use of memory allocation and deallocation when you need to work with a vararg list of objects.
The objects are unpacked from the vararg list into two 'C' arrays and then a code fragment you specify is able to make use of them before that 'C' array is destroyed.

The firstObject argument is the name of the formal parameter in your method or function which precedes the ',...' denoting variable args.

The code argument is a piece of objective-c code to be executed to make use of the objects stored in the 'C' arrays.
When this code is called the unsigned integer '__count' will contain the number of objects unpacked, the pointer '__objects' will point to the first object in each pair, and the pointer '__pairs' will point to an array containing the second halves of the pairs of objects whose first halves are in '__objects'.
This lets you pack a list of the form 'key, value, key, value,...' into an array of keys and an array of values.

This is a macro designed to minimise the use of memory allocation and deallocation when you need to work with a vararg list of objects.
The objects are unpacked from the vararg list into a 'C' array and then a code fragment you specify is able to make use of them before that 'C' array is destroyed.

The firstObject argument is the name of the formal parameter in your method or function which precedes the ',...' denoting variable args.

The code argument is a piece of objective-c code to be executed to make use of the objects stored in the 'C' array.
When this code is called the unsigned integer '__count' will contain the number of objects unpacked, and the pointer '__objects' will point to the unpacked objects, ie. firstObject followed by the vararg arguments up to (but not including) the first nil.


GS_USEIDPAIRLIST

GS_USEIDPAIRLIST(firstObject, code,...)

Fills a nil terminated array of Class objects referenced by buffer with max number of classes registered with the objc runtime. The provided buffer must be large enough to hold max + 1 Class objects. If buffer is nil, the function returns the number of Class objects that would be inserted if the buffer is large enough. Otherwise returns the number of Class objects that did not fit into the provided buffer. This function keeps a cache of the class list for future invocations when used with the GNU runtime. If clearCache is YES, this cache will be invalidated and rebuild. The flag has no effect for the NeXT runtime. This function is provided as consistent API to both runtimes. In the case of the GNU runtime it is likely more efficient to use objc_next_class() to iterate over the classes.
GSObjCClass() return the class of an instance. Returns a nul pointer if the argument is nil.
Returns the superclass of this.
GSObjCIsInstance() tests to see if an id is an instance. Returns NO if the argument is nil.
GSObjCIsClass() tests to see if an id is a class. Returns NO if the argument is nil.
GSObjCIsKindOf() tests to see if a class inherits from another class The argument to this function must NOT be nil.
Given a class name, return the corresponding class or a nul pointer if the class cannot be found.
If the argument is nil, return a nul pointer.
Return the name of the supplied class, or a nul pointer if no class was supplied.
Return the name of the object's class, or a nul pointer if no object was supplied.
Return the name of the supplied selector, or a nul pointer if no selector was supplied.
Return a selector matching the specified name, or nil if no name is supplied. The returned selector could be any one with the name.
If no selector exists, returns nil.
Return the selector for the specified name and types. Returns a nul pointer if the name is nul. Uses any available selector if the types argument is nul.
Creates a new selector if necessary.
Return the type information from the specified selector. May return a nul pointer if the selector was a nul pointer or if it was not typed.
Compare only the type information ignoring qualifiers, the frame layout and register markers. Unlike sel_types_match, this function also handles comparisons of types with and without any layout information.
Returns a protocol object with the corresponding name. This function searches the registered classes for any protocol with the supplied name. If one is found, it is cached in for future requests. If efficiency is a factor then use GSRegisterProtocol() to insert a protocol explicitly into the cache used by this function. If no protocol is found this function returns nil.
Registers proto in the cache used by GSProtocolFromName() .
Returns the pointer to the method structure for the selector in the specified class. Depending on searchInstanceMethods, this function searches either instance or class methods. Depending on searchSuperClassesm this function searches either the specified class only or also its superclasses.
To obtain the implementation pointer IMP use returnValue->method_imp which should be safe across all runtimes.
It should be safe to use this function in +load implementations.
This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
Flushes the cached method dispatch table for the class. Call this function after any manipulations in the method structures.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It should be safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.
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.
It is not necessarily safe to use this function in +load implementations.
This function should currently (June 2003) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a pointer to objc_malloc'ed memory large enough to hold a struct objc_method_list with 'count' number of struct objc_method entries. The memory returned is initialized with 0, including the method count and next method list fields.

This function is intended for use in conjunction with GSAppendMethodToList() to fill the memory and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Inserts the method described by sel, types and imp into the slot of the list's method_count incremented by 1. This function does not and cannot check whether the list provided has the necessary capacity.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

This function is intended for use in conjunction with GSAllocMethodList() to allocate the list and GSAddMethodList() to activate the method list.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method identified by sel from the method list moving the following methods up in the list, leaving the last entry blank. After this call, all references of previous GSMethodFromList() calls with this list should be considered invalid. If the values they referenced are needed, they must be copied to external buffers before this function is called.

Returns YES if the a matching method was found a removed, NO otherwise.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

WARNING: Manipulating the runtime structures can be hazardous!

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns a method list of the class that contains the selector. Depending on searchInstanceMethods either instance or class methods are searched. Returns NULL if none are found. This function does not search the superclasses method lists. Call this method with the address of a void * pointing to NULL to obtain the first (active) method list containing the selector. Subsequent calls will return further method lists which contain the selector. If none are found, it returns NULL. You may instead pass NULL as the iterator in which case the first method list containing the selector will be returned. Do not call it with an uninitialized iterator. If either class or selector are NULL the function returns NULL. If subsequent calls to this function with the same non-NULL iterator yet different searchInstanceMethods value are called, the behavior is undefined.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the (first) GSMethod contained in the supplied list that corresponds to sel. Returns NULL if none is found.

The GNU runtime makes a difference between method lists that are "free standing" and those that "attached" to classes. For "free standing" method lists (e.g. created with GSAllocMethodList() that have not been added to a class or those which have been removed via GSRemoveMethodList()) isFree must be passed YES. When manipulating "attached" method lists, specify NO .

Add the method list to the class as the first list to be searched during method invocation for the given class. Depending on toInstanceMethods, this list will be added as an instance or a class method list. If the list is in use by another class, behavior is undefined. Create a new list with GSAllocMethodList() or use GSRemoveMethodList() to remove a list before inserting it in a class.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Removes the method list from the classes instance or class method lists depending on fromInstanceMethods. If the list is not part of the class, behavior is undefined.

After method list manipulation you should call GSFlushMethodCacheForClass() for the changes to take effect.

This function should currently (June 2004) be considered WIP. Please follow potential changes (Name, parameters,...) closely until it stabilizes.

Returns the version number of this.
Return the zone in which an object belongs, without using the zone method
Quickly return autoreleased data storage area.
Allocate a new objc_mutex_t and store it in the location pointed to by request. A mutex is only created if the value pointed to by request is NULL. This function is thread safe in the sense that multiple threads my call this function with the same value of request and only one will actually set the mutex. It is the users responsibility that no one else attempts to set the mutex pointed to. This function should be used with objc_mutex_t variables which were statically initialized to NULL like:

 void function (void)
 {
   static objc_mutex_t my_lock = NULL;
   if (my_lock == NULL)
     GSAllocateMutexAt(&my_lock);
   objc_mutex_lock(my_lock);
   do_work ();
   objc_mutex_unlock(my_lock);
 }
 

Returns a system error message on a variety of systems

Prints a message to fptr using the format string provided and any additional arguments. The format string is interpreted as by the NSString formatted initialisers, and understands the '%@' syntax for printing an object.

The data is written to the file pointer in the default CString encoding if possible, as a UTF8 string otherwise.

This function is recommended for printing general log messages. For debug messages use NSDebugLog() and friends. For error logging use NSLog() , and for warnings you might consider NSWarnLog() .

## deprecated ##
## deprecated ##
## deprecated ##
The number of objects to try to get from varargs into an array on the stack... if there are more than this, use the heap. NB. This MUST be a multiple of 2

This is a macro designed to minimise the use of memory allocation and deallocation when you need to work with a vararg list of objects.
The objects are unpacked from the vararg list into two 'C' arrays and then a code fragment you specify is able to make use of them before that 'C' array is destroyed.

The firstObject argument is the name of the formal parameter in your method or function which precedes the ',...' denoting variable args.

The code argument is a piece of objective-c code to be executed to make use of the objects stored in the 'C' arrays.
When this code is called the unsigned integer '__count' will contain the number of objects unpacked, the pointer '__objects' will point to the first object in each pair, and the pointer '__pairs' will point to an array containing the second halves of the pairs of objects whose first halves are in '__objects'.
This lets you pack a list of the form 'key, value, key, value,...' into an array of keys and an array of values.



Up