home *** CD-ROM | disk | FTP | other *** search
- /* NSMapTable.h
- Scalable hash table for mapping keys to values
- Copyright 1994-1996, NeXT Software, Inc. All rights reserved.
- */
-
- #import <Foundation/NSString.h>
- #import <Foundation/NSArray.h>
-
- /**************** Data structure ****************/
-
- typedef struct _NSMapTable NSMapTable;
-
- typedef struct {
- unsigned (*hash)(NSMapTable *table, const void *);
- BOOL (*isEqual)(NSMapTable *table, const void *, const void *);
- void (*retain)(NSMapTable *table, const void *);
- void (*release)(NSMapTable *table, void *);
- NSString *(*describe)(NSMapTable *table, const void *);
- const void *notAKeyMarker;
- } NSMapTableKeyCallBacks;
-
- #define NSNotAnIntMapKey ((const void *)0x80000000)
- #define NSNotAPointerMapKey ((const void *)0xffffffff)
-
- typedef struct {
- void (*retain)(NSMapTable *table, const void *);
- void (*release)(NSMapTable *table, void *);
- NSString *(*describe)(NSMapTable *table, const void *);
- } NSMapTableValueCallBacks;
-
- typedef struct {unsigned _pi; void *_nk; void *_bs;} NSMapEnumerator;
-
- /**************** Map table operations ****************/
-
- FOUNDATION_EXPORT NSMapTable *NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, unsigned capacity, NSZone *zone);
- FOUNDATION_EXPORT NSMapTable *NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, unsigned capacity);
- FOUNDATION_EXPORT void NSFreeMapTable(NSMapTable *table);
- FOUNDATION_EXPORT void NSResetMapTable(NSMapTable *table);
- FOUNDATION_EXPORT BOOL NSCompareMapTables(NSMapTable *table1, NSMapTable *table2);
- FOUNDATION_EXPORT NSMapTable *NSCopyMapTableWithZone(NSMapTable *table, NSZone *zone);
- FOUNDATION_EXPORT BOOL NSMapMember(NSMapTable *table, const void *key, void **originalKey, void **value);
- FOUNDATION_EXPORT void *NSMapGet(NSMapTable *table, const void *key);
- FOUNDATION_EXPORT void NSMapInsert(NSMapTable *table, const void *key, const void *value);
- FOUNDATION_EXPORT void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
- FOUNDATION_EXPORT void *NSMapInsertIfAbsent(NSMapTable *table, const void *key, const void *value);
- FOUNDATION_EXPORT void NSMapRemove(NSMapTable *table, const void *key);
- FOUNDATION_EXPORT NSMapEnumerator NSEnumerateMapTable(NSMapTable *table);
- FOUNDATION_EXPORT BOOL NSNextMapEnumeratorPair(NSMapEnumerator *enumerator, void **key, void **value);
- FOUNDATION_EXPORT unsigned NSCountMapTable(NSMapTable *table);
- FOUNDATION_EXPORT NSString *NSStringFromMapTable(NSMapTable *table);
- FOUNDATION_EXPORT NSArray *NSAllMapTableKeys(NSMapTable *table);
- FOUNDATION_EXPORT NSArray *NSAllMapTableValues(NSMapTable *table);
-
- /**************** Common map table key callbacks ****************/
-
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSIntMapKeyCallBacks;
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks;
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks;
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks;
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks;
- FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks;
-
- /**************** Common map table value callbacks ****************/
-
- FOUNDATION_EXPORT const NSMapTableValueCallBacks NSIntMapValueCallBacks;
- FOUNDATION_EXPORT const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks;
- FOUNDATION_EXPORT const NSMapTableValueCallBacks NSObjectMapValueCallBacks;
- FOUNDATION_EXPORT const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks;
- FOUNDATION_EXPORT const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks;
-
-