home *** CD-ROM | disk | FTP | other *** search
-
- /*###########################################################
- Written by Don McGregor Version 1.0, Feb 1992.
-
- This code is free for any use. GNU copyleft
- rules apply. This code has no warrantability
- of fitness for a particular use, I am not
- responsible for any damage to data that might
- be caused by bugs, etc, etc.
-
- I encourage others to examine and improve on this
- code, and to post the improvements to the net.
-
- Don McGregor, mcgregdr@conan.ie.orst.edu (for now).
-
- ###########################################################*/
-
-
- #import <objc/Object.h>
- #import <objc/List.h>
- #import <appkit/Text.h>
- #import <objc/HashTable.h>
-
- //Sort order, by rising value or falling value
-
- #define ASCENDING 0
- #define DESCENDING 1
-
- //type of data the order is maintained by
-
- #define INT 0
- #define ATOM 1
- #define DOUBLE 2
- #define FLOAT 3
- #define OTHER 4
-
- #define CURRENT_SORTED_LIST_VERSION 1
-
- @interface SortedList:List
- {
- int sortOrder; //ascending or descending
- BOOL caseSensitive; //case sensitive string ordering or not
- SEL keyMethod; //the method that returns the value the list
- //is sorted by
- int keyDataType; //the type of value returned by the keyMethod
- //(eg, numeric, NXAtom, etc.)
- }
-
- + initialize; //sets class version
-
- - initCount:(unsigned int)numSlots; //initialization
-
- - setKeyMethod:(SEL)theMethod; //sets method the list is sorted by
- - (SEL)keyMethod; //returns same
-
- - setSortOrder:(int)theSortOrder; //the sort order, asc or desc
- - (int)sortOrder; //returns the sort order
-
- - setCaseSensitive:(BOOL)isIt; //whether strings are case senstive
- - (BOOL)caseSensitive;
-
- - setKeyDataType:(int)theKeyDataType; //sets type of key data
- - (int)keyDataType; //returns type of key data
-
- - printKeyValues; //useful for debugging
-
- - addObject:anObject; //slap a new object into list
- - addObjectIfAbsent:anObject; //override of List method
- - (int)compare:thisObject to:thatObject;//compare operator on keys
- - (BOOL)isEqual:anObject; //similar to List op
-
- - copy; //override of List
- - copyFromZone:(NXZone*)zone;
-
- - insertionSort;
-
-
- /*--------------------------------------
- Methods that are NOT implemented
- since they make no sense for a
- sorted list. Attempting to call
- these will result in a runtime error.
- --------------------------------------*/
-
-
- - insertObject:anObject at:(unsigned int)index;
- - replaceObjectAt:(unsigned int)index with:newObject;
- - replaceObject:anObject with:newObject;
-
-
- /*--------------------------------------
- Archiving methods
- --------------------------------------*/
-
- -write:(NXTypedStream*)stream;
- - read:(NXTypedStream*)stream;
-
- @end
-