Classes
Protocols
Constants
Functions
Macros
Types
Variables

### Classes

GCArray
GCDictionary
GCMutableArray
GCMutableDictionary
GCObject
GSHTMLParser
GSHTMLSAXHandler
GSMimeCodingContext
GSMimeDocument
GSMimeHeader
GSMimeParser
GSMimeSMTPClient
GSMimeSerializer
GSSAXHandler
GSTLSCertificateList
GSTLSCredentials
GSTLSDHParams
GSTLSObject
GSTLSPrivateKey
GSTLSSession
GSTreeSAXHandler
GSXMLAttribute
GSXMLDocument
GSXMLNamespace
GSXMLNode
GSXMLParser
GSXMLRPC
GSXPathBoolean
GSXPathContext
GSXPathNodeSet
GSXPathNumber
GSXPathObject
GSXPathString

### Protocols

### Constants

GSMimeErrorDomain
GSTLSCAFile
GSTLSCertificateFile
GSTLSCertificateKeyFile
GSTLSCertificateKeyPassword
GSTLSDebug
GSTLSIssuers
GSTLSOwners
GSTLSPriority
GSTLSRemoteHosts
GSTLSRevokeFile
GSTLSServerName
GSTLSVerify

### Functions

GSAutoreleasedBuffer
GSCGetInstanceVariableDefinition
GSClassFromName
GSClassList
GSClassNameFromObject
GSClassSwizzle
GSCurrentThread
GSCurrentThreadDictionary
GSDebugFunctionMsg
GSDebugMethodMsg
GSDebugSet
GSDefaultLanguageLocale
GSDomainFromDefaultLocale
GSEncodingForRegistry
GSEncodingFromLocale
GSFindNamedFile
GSFlushMethodCacheForClass
GSFromUnicode
GSGetMethod
GSIArrayAddItem
GSIArrayAddItemNoRetain
GSIArrayCapacity
GSIArrayCheckSort
GSIArrayClear
GSIArrayCopyWithZone
GSIArrayCount
GSIArrayEmpty
GSIArrayGrow
GSIArrayGrowTo
GSIArrayInitWithZoneAndCapacity
GSIArrayInitWithZoneAndStaticCapacity
GSIArrayInsertItem
GSIArrayInsertItemNoRetain
GSIArrayInsertSorted
GSIArrayInsertSortedNoRetain
GSIArrayInsertionPosition
GSIArrayItemAtIndex
GSIArrayItems
GSIArrayLastItem
GSIArrayRemoveAllItems
GSIArrayRemoveItemAtIndex
GSIArrayRemoveItemAtIndexNoRelease
GSIArrayRemoveItemsFromIndex
GSIArrayRemoveLastItem
GSIArraySearch
GSIArraySetItemAtIndex
GSIArraySize
GSIMapAddKey
GSIMapAddKeyNoRetain
GSIMapAddNodeToBucket
GSIMapAddNodeToMap
GSIMapAddPair
GSIMapAddPairNoRetain
GSIMapBucketForKey
GSIMapCleanMap
GSIMapCountByEnumeratingWithStateObjectsCount
GSIMapEmptyMap
GSIMapEndEnumerator
GSIMapEnumeratorBucket
GSIMapEnumeratorForMap
GSIMapEnumeratorNextNode
GSIMapFirstNode
GSIMapFreeNode
GSIMapGetNode
GSIMapInitWithZoneAndCapacity
GSIMapLinkNodeIntoBucket
GSIMapMoreNodes
GSIMapNodeForKey
GSIMapNodeForKeyInBucket
GSIMapNodeForSimpleKey
GSIMapPickBucket
GSIMapRemangleBuckets
GSIMapRemoveAndFreeNode
GSIMapRemoveKey
GSIMapRemoveNodeFromBucket
GSIMapRemoveNodeFromMap
GSIMapRemoveWeak
GSIMapResize
GSIMapRightSizeMap
GSIMapSize
GSIMapUnlinkNodeFromBucket
GSLanguageFromLocale
GSLanguagesFromLocale
GSLastErrorStr
GSLocaleVariants
GSNameFromClass
GSNameFromSelector
GSObjCAddClassBehavior
GSObjCAddClassOverride
GSObjCAddClasses
GSObjCAddMethods
GSObjCAllSubclassesOfClass
GSObjCBehaviorDebug
GSObjCClass
GSObjCDirectSubclassesOfClass
GSObjCFindVariable
GSObjCGetInstanceVariableDefinition
GSObjCGetVal
GSObjCGetVariable
GSObjCIsClass
GSObjCIsInstance
GSObjCIsKindOf
GSObjCMakeClass
GSObjCMethodNames
GSObjCSetVal
GSObjCSetVariable
GSObjCSuper
GSObjCVariableNames
GSObjCVersion
GSPathHandling
GSPrintf
GSProtocolFromName
GSProtocolGetMethodDescriptionRecursive
GSRegisterProtocol
GSSelectorFromName
GSSelectorFromNameAndTypes
GSSelectorTypesMatch
GSSetLocale
GSSetLocaleC
GSSkipTypeQualifierAndLayoutInfo
GSToUnicode
GSTypesFromSelector
GSUnicode
_Block_copy
_Block_release
gs_consumed
objc_copyWeak
objc_destroyWeak
objc_initWeak
objc_loadWeak
objc_loadWeakRetained
objc_moveWeak
objc_storeWeak
uni_cop
uni_is_decomp
uni_isnonsp
uni_tolower
uni_toupper

### Macros

ALog
ASSIGN
ASSIGNCOPY
ASSIGNMUTABLECOPY
AUTORELEASE
BLOCK_SCOPE
CALL_BLOCK
CALL_BLOCK_NO_ARGS
CALL_BLOCK_RET
CALL_BLOCK_RET_NO_ARGS
CALL_NON_NULL_BLOCK
CALL_NON_NULL_BLOCK_NO_ARGS
CHECK_INDEX_RANGE_ERROR
CREATE_AUTORELEASE_POOL
DEALLOC
DEFINE_BLOCK_TYPE
DEFINE_BLOCK_TYPE_NO_ARGS
DESTROY
DLog
ENTER_POOL
GSLocalizedStaticString
GSOnceFLog
GSOnceMLog
GS_API_LATEST
GS_API_MACOSX
GS_API_NONE
GS_API_OPENSTEP
GS_API_OSSPEC
GS_API_VERSION
GS_CLANG_MINREQ
GS_DEPRECATED_FUNC
GS_EXPOSE
GS_GCC_MINREQ
GS_LOCALISATION_BUNDLE
GS_MAX_OBJECTS_FROM_STACK
GS_NORETURN_METHOD
GS_PART_MAP_ENUMERATOR
GS_RANGE_CHECK
GS_UNIMPLEMENTED
GS_UNUSED_ARG
GS_UNUSED_FUNC
GS_UNUSED_IVAR
GS_USEIDLIST
GS_USEIDPAIRLIST
IF_NO_ARC
IF_NO_GC
LEAVE_POOL
MAC_OS_X_VERSION_MAX_ALLOWED
NSDebugFLLog
NSDebugFLog
NSDebugFRLog
NSDebugLLog
NSDebugLog
NSDebugMLLog
NSDebugMLog
NSDebugMRLog
NSWarnFLog
NSWarnLog
NSWarnMLog
NS_CONSUMED
NS_CONSUMES_SELF
NS_RETURNS_NOT_RETAINED
NS_RETURNS_RETAINED
OS_API_VERSION
RECREATE_AUTORELEASE_POOL
RELEASE
RETAIN
TEST_AUTORELEASE
TEST_RELEASE
TEST_RETAIN
_
__
__has_feature

### Types

GSIArray
GSIArray_t
GSIMapBucket
GSIMapBucket_t
GSIMapEnumerator
GSIMapEnumerator_t
GSIMapNode
GSIMapNode_t
GSIMapTable
GSIMapTable_t
GSIVar
GSMethod
GSMimeErrorCode
GSTLSIOR
GSTLSIOW
NSGNUstepStringEncoding
NSInteger
NSUInteger
struct _GSIMapEnumerator

### Variables

_GSIE
struct _GSIArray
struct _GSIMapBucket
struct _GSIMapNode
struct _GSIMapTable

Up

# GCObject documentation

### Authors

Richard Frith-Macdonald (`rfm@gnu.org`)

Date: Generated at 2025-12-02 21:52:00 +0000

Copyright: (C) 2002 Free Software Foundation, Inc.

### Contents -

1. Software documentation for the GCArray class
2. Software documentation for the GCDictionary class
3. Software documentation for the GCMutableArray class
4. Software documentation for the GCMutableDictionary class
5. Software documentation for the GCObject class
6. Software documentation for the GCObject(Extra) category

# Software documentation for the GCArray class

## GCArray : NSArray

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep
Description forthcoming.

Instance Variables

## Instance Variables for GCArray Class

### _contents

@protected id* _contents;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### _count

@protected unsigned int _count;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### _isGCObject

@protected BOOL* _isGCObject;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### gc

@protected gcInfo gc;
Availability: OpenStep
Description forthcoming.

# Software documentation for the GCDictionary class

## GCDictionary : NSDictionary

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep
Description forthcoming.

Instance Variables

## Instance Variables for GCDictionary Class

### _map

@protected NSMapTable* _map;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### gc

@protected gcInfo gc;
Availability: OpenStep
Description forthcoming.

# Software documentation for the GCMutableArray class

## GCMutableArray : NSMutableArray

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep
Description forthcoming.

Instance Variables

## Instance Variables for GCMutableArray Class

### _contents

@protected id* _contents;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### _count

@protected unsigned int _count;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### _isGCObject

@protected BOOL* _isGCObject;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### _maxCount

@protected unsigned int _maxCount;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### gc

@protected gcInfo gc;
Availability: OpenStep
Description forthcoming.

# Software documentation for the GCMutableDictionary class

## GCMutableDictionary : NSMutableDictionary

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep
Description forthcoming.

Instance Variables

## Instance Variables for GCMutableDictionary Class

### _map

@protected NSMapTable* _map;
Availability: OpenStep
Warning the underscore at the start of the name of this instance variable indicates that, even though it is not technically private, it is intended for internal use within the package, and you should not use the variable in other code.

### gc

@protected gcInfo gc;
Availability: OpenStep
Description forthcoming.

# Software documentation for the GCObject class

## GCObject : NSObject

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep

The GCObject class is both the base class for all garbage collected objects, and an infrastructure for handling garbage collection.

It maintains a list of all garbage collectable objects and provides a method to run a garbage collection pass on those objects.

Instance Variables

### Method summary

- -gcAlreadyVisited
- -gcNextObject
- -gcPreviousObject
- -gcSetNextObject:
- -gcSetPreviousObject:
- -gcSetVisited:
- +gcCollectGarbage
- +gcIsCollecting
- +gcObjectWillBeDeallocated:
- -gcDecrementRefCount
- -gcDecrementRefCountOfContainedObjects
- -gcIncrementRefCount
- -gcIncrementRefCountOfContainedObjects

### gcCollectGarbage

+ (void) gcCollectGarbage;
Availability: OpenStep

This method runs a garbage collection, causing unreferenced objects to be deallocated. This is done using a simple three pass algorithm -

Pass 1
  All the garbage collectable objects are sent a -gcDecrementRefCountOfContainedObjects message.
Pass 2
  All objects having a refCount greater than 0 are sent an -gcIncrementRefCountOfContainedObjects message.
Pass 3
  All the objects that still have the refCount of 0 are part of cyclic graphs and none of the objects from this graph are held by some object outside graph. These objects receive the -dealloc message. In this method they should send the -dealloc message to any garbage collectable (GCObject and subclass) instances they contain.

During garbage collection, the +gcIsCollecting method returns `YES`.

### gcIsCollecting

+ (BOOL) gcIsCollecting;
Availability: OpenStep
Returns a flag to indicate whether a garbage collection is in progress.

### gcObjectWillBeDeallocated:

+ (void) gcObjectWillBeDeallocated: (GCObject*)anObject;
Availability: OpenStep
Called to remove anObject from the list of garbage collectable objects.
This method is provided so that classes which are not subclasses of GCObject (but which have the same initial instance variable layout) can use multiple inheritance (behaviors) to act as GCObject instances, but can have their own -dealloc methods.
These classes should call this in their own -dealloc methods.

### gcDecrementRefCount

- (void) gcDecrementRefCount;
Availability: OpenStep
Decrements the garbage collection reference count for the receiver.

### gcDecrementRefCountOfContainedObjects

- (void) gcDecrementRefCountOfContainedObjects;
Availability: OpenStep

Marks the receiver as not having been visited in the current garbage collection process (first pass of collection).

All container subclasses should override this method to call the super implementation then decrement the ref counts of their contents as well as sending the -gcDecrementRefCountOfContainedObjects message to each of them.

### gcIncrementRefCount

- (void) gcIncrementRefCount;
Availability: OpenStep
Increments the garbage collection reference count for the receiver.

### gcIncrementRefCountOfContainedObjects

- (BOOL) gcIncrementRefCountOfContainedObjects;
Availability: OpenStep

Checks to see if the receiver has already been visited in the current garbage collection process, and either marks the receiver as visited (and returns `YES`) or returns `NO` to indicate that it had already been visited.

All container subclasses should override this method to call the super implementation then, if the method returns `YES`, increment the reference count of any contained objects and send the -gcIncrementRefCountOfContainedObjects to each of the contained objects too.

## Instance Variables for GCObject Class

### gc

@protected gcInfo gc;
Availability: OpenStep
Description forthcoming.

# Software documentation for the GCObject(Extra) category

## GCObject(Extra)

> Declared in:
>   GNUstepBase/GCObject.h

Availability: OpenStep
This category implements accessor methods for the instance variables used for garbage collecting. If/when we can ensure that all garbage collecting classes use the same initial ivar layout, we can remove these methods and the garbage collector can access the ivars directly, making a pretty big performance improvement during collecting.
NB. These methods must *only* be used by the garbage collecting process or in methods called from the garbage collector. Anything else is not thread-safe.

### Method summary

- -gcAlreadyVisited
- -gcNextObject
- -gcPreviousObject
- -gcSetNextObject:
- -gcSetPreviousObject:
- -gcSetVisited:

### gcAlreadyVisited

- (BOOL) gcAlreadyVisited;
Availability: OpenStep
Description forthcoming.

### gcNextObject

- (GCObject*) gcNextObject;
Availability: OpenStep
Description forthcoming.

### gcPreviousObject

- (GCObject*) gcPreviousObject;
Availability: OpenStep
Description forthcoming.

### gcSetNextObject:

- (GCObject*) gcSetNextObject: (GCObject*)anObject;
Availability: OpenStep
Description forthcoming.

### gcSetPreviousObject:

- (GCObject*) gcSetPreviousObject: (GCObject*)anObject;
Availability: OpenStep
Description forthcoming.

### gcSetVisited:

- (void) gcSetVisited: (BOOL)flag;
Availability: OpenStep
Description forthcoming.

Up