home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / btree / protocols.h < prev   
Text File  |  1993-08-15  |  6KB  |  184 lines

  1. /*
  2. protocols.h
  3. Copyright 1991,NeXT Computer,Inc.
  4. */
  5.  
  6. #import    <store/protocols.h>
  7.  
  8. typedef int 
  9. IXComparator(const void *data1, unsigned short length1, 
  10.     const void *data2, unsigned short length2, const void *context);
  11.  
  12. #ifdef    NX_COMPILER_RELEASE_3_0
  13. @protocol IXComparatorSetting
  14. #else    NX_COMPILER_RELEASE_3_0
  15. @interface Object(IXComparatorSetting)
  16. #endif    NX_COMPILER_RELEASE_3_0
  17.  
  18. // context is arbitrary, caller supplied pointer passed to comparator.  
  19. // comparator is not saved across free/init.
  20.  
  21. - getComparator:(IXComparator **)comparator andContext:(const void **)context;
  22. - setComparator:(IXComparator *)comparator andContext:(const void *)context;
  23.  
  24. @end
  25.  
  26. #ifdef    NX_COMPILER_RELEASE_3_0
  27. @protocol IXComparisonSetting
  28. #else    NX_COMPILER_RELEASE_3_0
  29. @interface Object(IXComparisonSetting)
  30. #endif    NX_COMPILER_RELEASE_3_0
  31.  
  32. // caller supplied comparator is cleared, and format string is installed
  33. // format string is not saved across free/init.
  34.  
  35. - (const char *)comparisonFormat;
  36. - setComparisonFormat:(const char *)aFormat;
  37.  
  38. @end
  39.  
  40. #ifdef    NX_COMPILER_RELEASE_3_0
  41. @protocol IXCursorPositioning
  42. #else    NX_COMPILER_RELEASE_3_0
  43. @interface Object(IXCursorPositioning)
  44. #endif    NX_COMPILER_RELEASE_3_0
  45.  
  46. - (BOOL)setFirst; // positions cursor at first key in key space
  47. - (BOOL)setLast; // positions cursor at last key in key space
  48. - (BOOL)setNext; // positions cursor at next key in key space
  49. - (BOOL)setPrevious; // position cursor at previous key in key space
  50.  
  51. - (BOOL)getKey:(const void **)key // returns value of key at cursor
  52.     andLength:(unsigned *)length;
  53. - (BOOL)setKey:(const void *)key // positions cursor at supplied key
  54.     andLength:(unsigned)length;
  55.  
  56. - (BOOL)isMatch; // true if cursor matched a key on last operation
  57.  
  58. @end
  59.  
  60. // a weighted reference to something that can be described by a handle.
  61. // note that the weight is not interpreted, and may be any unsigned value, 
  62. // such as a hint or a another handle.
  63.  
  64. typedef struct IXPosting    {
  65.     unsigned            handle;
  66.     unsigned            weight;
  67. } IXPosting;
  68.  
  69. #ifdef    NX_COMPILER_RELEASE_3_0
  70. @protocol IXPostingExchange
  71. #else    NX_COMPILER_RELEASE_3_0
  72. @interface Object(IXPostingExchange)
  73. #endif    NX_COMPILER_RELEASE_3_0
  74.  
  75. // a copy of the receiver's postings is returned by get.  caller must free.
  76. // set does not consume the copy.
  77.  
  78. - getCount:(unsigned *)theCount andPostings:(IXPosting **)thePostings;
  79. - setCount:(unsigned)theCount andPostings:(const IXPosting *)thePostings;
  80.  
  81. @end
  82.  
  83. #ifdef    NX_COMPILER_RELEASE_3_0
  84. @protocol IXPostingOperations
  85. #else    NX_COMPILER_RELEASE_3_0
  86. @interface Object(IXPostingOperations)
  87. #endif    NX_COMPILER_RELEASE_3_0
  88.  
  89. - addHandle:(unsigned)handle withWeight:(unsigned)weight;
  90. - removeHandle:(unsigned)handle;
  91.  
  92. - empty;
  93. - (unsigned)count;
  94.  
  95. // for iterating over the handles.  zero is returned at end of list.
  96.  
  97. - (unsigned)setFirstHandle;
  98. - (unsigned)setNextHandle;
  99.  
  100. // sets to the supplied handle, or if not found, to the next larger handle
  101. - (unsigned)setHandle:(unsigned)handle;
  102. - (unsigned)getHandle:(unsigned *)handle andWeight:(unsigned *)weight;
  103.  
  104. @end
  105.  
  106. // default comparator routines for use with IXBTree.
  107.  
  108. extern int 
  109. IXFormatComparator(const void *data1, unsigned short length1, 
  110.     const void *data2, unsigned short length2, void *format);
  111.  
  112. extern int 
  113. IXCompareStrings(const void *data1, unsigned short length1, 
  114.     const void *data2, unsigned short length2, const void *context);
  115.  
  116. extern int 
  117. IXCompareMonocaseStrings(const void *data1, unsigned short length1, 
  118.     const void *data2, unsigned short length2, const void *context);
  119.  
  120. extern int 
  121. IXCompareBytes(const void *data1, unsigned short length1, 
  122.     const void *data2, unsigned short length2, const void *context);
  123.  
  124. extern int 
  125. IXCompareShort(const void *data1, unsigned short length1, 
  126.     const void *data2, unsigned short length2, const void *context);
  127.  
  128. extern int 
  129. IXCompareShorts(const void *data1, unsigned short length1, 
  130.     const void *data2, unsigned short length2, const void *context);
  131.  
  132. extern int 
  133. IXCompareLong(const void *data1, unsigned short length1, 
  134.     const void *data2, unsigned short length2, const void *context);
  135.  
  136. extern int 
  137. IXCompareLongs(const void *data1, unsigned short length1, 
  138.     const void *data2, unsigned short length2, const void *context);
  139.  
  140. extern int 
  141. IXCompareUnsignedBytes(const void *data1, unsigned short length1, 
  142.     const void *data2, unsigned short length2, const void *context);
  143.  
  144. extern int 
  145. IXCompareUnsignedShort(const void *data1, unsigned short length1, 
  146.     const void *data2, unsigned short length2, const void *context);
  147.  
  148. extern int 
  149. IXCompareUnsignedShorts(const void *data1, unsigned short length1, 
  150.     const void *data2, unsigned short length2, const void *context);
  151.  
  152. extern int 
  153. IXCompareUnsignedLong(const void *data1, unsigned short length1, 
  154.     const void *data2, unsigned short length2, const void *context);
  155.  
  156. extern int 
  157. IXCompareUnsignedLongs(const void *data1, unsigned short length1, 
  158.     const void *data2, unsigned short length2, const void *context);
  159.  
  160. extern int 
  161. IXCompareFloat(const void *data1, unsigned short length1, 
  162.     const void *data2, unsigned short length2, const void *context);
  163.  
  164. extern int 
  165. IXCompareFloats(const void *data1, unsigned short length1, 
  166.     const void *data2, unsigned short length2, const void *context);
  167.  
  168. extern int 
  169. IXCompareDouble(const void *data1, unsigned short length1, 
  170.     const void *data2, unsigned short length2, const void *context);
  171.  
  172. extern int 
  173. IXCompareDoubles(const void *data1, unsigned short length1, 
  174.     const void *data2, unsigned short length2, const void *context);
  175.  
  176. extern int 
  177. IXCompareStringAndUnsigneds(const void *data1, unsigned short length1, 
  178.     const void *data2, unsigned short length2, const void *context);
  179.  
  180. extern int 
  181. IXCompareUnsignedAndStrings(const void *data1, unsigned short length1, 
  182.     const void *data2, unsigned short length2, const void *context);
  183.  
  184.