home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / NSMapTable.h < prev    next >
Text File  |  1996-09-11  |  4KB  |  71 lines

  1. /*    NSMapTable.h
  2.     Scalable hash table for mapping keys to values
  3.     Copyright 1994-1996, NeXT Software, Inc.  All rights reserved.
  4. */
  5.  
  6. #import <Foundation/NSString.h>
  7. #import <Foundation/NSArray.h>
  8.  
  9. /****************    Data structure    ****************/
  10.  
  11. typedef struct _NSMapTable NSMapTable;
  12.  
  13. typedef struct {
  14.     unsigned    (*hash)(NSMapTable *table, const void *);
  15.     BOOL    (*isEqual)(NSMapTable *table, const void *, const void *);
  16.     void    (*retain)(NSMapTable *table, const void *);
  17.     void    (*release)(NSMapTable *table, void *);
  18.     NSString     *(*describe)(NSMapTable *table, const void *);
  19.     const void    *notAKeyMarker;
  20. } NSMapTableKeyCallBacks;
  21.     
  22. #define NSNotAnIntMapKey    ((const void *)0x80000000)
  23. #define NSNotAPointerMapKey    ((const void *)0xffffffff)
  24.  
  25. typedef struct {
  26.     void    (*retain)(NSMapTable *table, const void *);
  27.     void    (*release)(NSMapTable *table, void *);
  28.     NSString     *(*describe)(NSMapTable *table, const void *);
  29. } NSMapTableValueCallBacks;
  30.     
  31. typedef struct {unsigned _pi; void *_nk; void *_bs;} NSMapEnumerator;
  32.  
  33. /****************    Map table operations    ****************/
  34.  
  35. FOUNDATION_EXPORT NSMapTable *NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, unsigned capacity, NSZone *zone);
  36. FOUNDATION_EXPORT NSMapTable *NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, unsigned capacity);
  37. FOUNDATION_EXPORT void NSFreeMapTable(NSMapTable *table);
  38. FOUNDATION_EXPORT void NSResetMapTable(NSMapTable *table);
  39. FOUNDATION_EXPORT BOOL NSCompareMapTables(NSMapTable *table1, NSMapTable *table2);
  40. FOUNDATION_EXPORT NSMapTable *NSCopyMapTableWithZone(NSMapTable *table, NSZone *zone);
  41. FOUNDATION_EXPORT BOOL NSMapMember(NSMapTable *table, const void *key, void **originalKey, void **value);
  42. FOUNDATION_EXPORT void *NSMapGet(NSMapTable *table, const void *key);
  43. FOUNDATION_EXPORT void NSMapInsert(NSMapTable *table, const void *key, const void *value);
  44. FOUNDATION_EXPORT void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
  45. FOUNDATION_EXPORT void *NSMapInsertIfAbsent(NSMapTable *table, const void *key, const void *value);
  46. FOUNDATION_EXPORT void NSMapRemove(NSMapTable *table, const void *key);
  47. FOUNDATION_EXPORT NSMapEnumerator NSEnumerateMapTable(NSMapTable *table);
  48. FOUNDATION_EXPORT BOOL NSNextMapEnumeratorPair(NSMapEnumerator *enumerator, void **key, void **value);
  49. FOUNDATION_EXPORT unsigned NSCountMapTable(NSMapTable *table);
  50. FOUNDATION_EXPORT NSString *NSStringFromMapTable(NSMapTable *table);
  51. FOUNDATION_EXPORT NSArray *NSAllMapTableKeys(NSMapTable *table);
  52. FOUNDATION_EXPORT NSArray *NSAllMapTableValues(NSMapTable *table);
  53.  
  54. /****************    Common map table key callbacks    ****************/
  55.  
  56. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSIntMapKeyCallBacks;
  57. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks;
  58. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks;
  59. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks;
  60. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks;
  61. FOUNDATION_EXPORT const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks;
  62.  
  63. /****************    Common map table value callbacks    ****************/
  64.  
  65. FOUNDATION_EXPORT const NSMapTableValueCallBacks NSIntMapValueCallBacks;
  66. FOUNDATION_EXPORT const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks;
  67. FOUNDATION_EXPORT const NSMapTableValueCallBacks NSObjectMapValueCallBacks;
  68. FOUNDATION_EXPORT const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks;
  69. FOUNDATION_EXPORT const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks;
  70.  
  71.