Mon Oct 25 12:41:28 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* coll/*Collecting.h:  Removed shallowCopy... methods with weird
	options.  These can be done easily and more flexibly with
	enumerations. 

	* coll/*Collecting.h, *Colletion.m: Removed definition and use of
	COLL_NO_ELEMENT, COLL_NO_OBJECT, COLL_NO_KEY, COLL_NO_INDEX.
	Added ...ifAbsentCall: methods to replace this functionality.

	* coll/Collecting.h, Collection.m: ...AllOccurrences... methods
	now return self. 

Thu Oct 21 17:41:49 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* libcoll.texi: Created.

Tue Oct 19 10:25:34 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* coll/Collecting.h: Changed method name -freeContents to
	-freeObjects.  Both names are pretty clear, and the later has the
	advantage of compatibility with NeXT.  

	* coll/Collecting.h: Changed method name -containsObjects to
	-contentsAreObjects.  The previous name could be interpretted as
	testing whether or not the collection was empty; in fact this
	method just tests whether or not the collection was initialized to
	hold objects (i.e.  initEncoding:@encode(id)).

	* coll/collstd.h:  Added #define's for defining nested functions
	in the argument position:  LAMBDA, LAMBDA_VOID_PERFORM,
	LAMBDA_ID_PERFORM, LAMBDA_BOOL_PERFORM.

	* coll/Collecting.h, KeyedCollecting.h, IndexedCollecting.h:
	Removed many methods for various combinations of perform:,
	perform:with:, perform:in, perform:in:with:.  All these can now be
	replaced with ...ByCalling: methods now that we can easily define
	nested functions with the LAMBDA macro's.  These methods really
	ballooned the size of the protocols, and they still didn't provide
	all the potentially useful conbinations.  This new scheme is far
	more flexible.  I left the -makeObjectsPerform: and
	-makeObjectsPerform:with: for compatibility with NeXT.

Mon Oct 18 15:18:01 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* eltfuncs.m: Fixed overflow bug in compare functions.

Fri Oct  8 11:47:56 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* List.m (replaceObjectAt:): Now returns oldObject.
	(makeObjectsPerform:with:): Now uses perform:with:.
	Removed -sortUsingMethod:inObject:.

	* coll/SortedArray.h: removed.

Thu Sep 30 10:52:14 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* List.m (makeObjectsPerform:, makeObjectsPerform:with:):  Removed
	dependence on _makeObjects...:reverseOrder:.  Using #if instead.

	* Bag.m (removeElement:occurrences:):  Added.  Bag will now cause
	error if you try to remove an element that's not there, or not
	there enough times.

Tue Sep 28 11:49:42 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* List.m, Storage.m:  Now use objc_malloc/OBJC_MALLOC and friends
	instead of malloc and friends.

	* Makefile.in, configure.in:  Created.  Now libcoll works with
	autoconf.  Also made some changes to *.m to take advantage of
	autoconf.

	* collstd.m:  Changed definition of free().  (thanks to
	krab@iesd.auc.dk) 

Mon Sep 27 09:59:25 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Bag.m (-uniqueCount): Added.

	* HashTable.m (-initKeyDesc:valueDesc:capacity:)  Increased
	portability for {long, unsigned} ints.

	* IndexedCollecting.h, IndexedCollection.m:  Added
	-safe...InReverse methods. 

	* List.m (copy):  Added.  In order to force -shallowCopy for
	compatibility with NeXT.

	* collhash.[hc] (coll_hash_empty): Added.

	* Collecting.h, Collection.m:  (-safe...) Added these enumerators
	for doing enumerations while changing the contents of the
	collection.

	* Collecting.h, Collection.m:  (-initWithContentsOf:) Added.  This
	allows for certain efficiencies, like init'ing an Array with the
	needed capacity from the start.

Sat Sep 25 12:20:18 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Collection.m, KeyedCollection, IndexedCollection.m:  Extracted
	message -comparisonFunction from inside loops to improve
	efficiency. 

	* Collecting.h, Collection.m:  Removed the -shallowCopySelect...,
	etc methods and replaced them with -withElementsTrueBy..., etc
	methods.  These shallowCopy methods make lots of sense in
	SmallTalk where garbage collection makes enumeration on
	temporary collections useful for iteration, but in ObjC I think
	methods with a little more flexibility would be more helpful.  I
	also wanted to add more options to those {select,reject,collect}
	methods: 1) the option of deep or shallow copies, 2) the option of
	changing the class of the new copy.  But if done in the old
	framework this would have exploded the number of methods.  The new
	framework allows all the old functionality, plus the new options,
	plus the option to do something useful without creating a new
	collection. 

Tue Sep 21 11:52:46 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* *.m:  Added -emptyCopy based on -allocCopy.  Subclasses override
	to take care of instance vars that must change.

	* Collecting.h, Collection.m:  Changed -addCount:... to
	-addObjectsCount:... and -addElementsCount:...

Mon Sep 20 17:05:10 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* *.[hm]:  Added code for archiving:  -write:, writeInit:,
	writeContents:, -read:, readInit:, readContents:.  I'm not sure
	this division of labor is the best.  I'm open to suggestions for
	different implementations. 

	* *.[hm]:  Changed all instances of the word "description" to
	"encoding".  Objective-C already uses @encode() for these things.
	We shouldn't introduce new vocabulary for refering to the same
	thing. 

	* *.[hm]:  Removed methods that allowed specification of
	comparison function independent of encoding.  This will allow us
	to archive the comparison function by archiving the encoding.
	Most people will be able to get custom comparisons by overriding
	-compare:.  If you really, really need some new weird comparisons
	for non-objects, you can still subclass the collection and
	override -comparisonFunction.  If people think that we will want
	to want custom comparisons of non-objects *very often*, then we
	come up with another scheme that still allows meaningful archiving
	of comparison functions.

Sun Sep 19 19:30:02 1993  Andrew McCallum  (mccallum@swan.cs.rochester.edu)

	* coll/eltfuncs.[hm]:  Created.  Moved functions for manipulating
	elt's from CollectionPrivate.h to eltfuncs.h.  This makes elt a
	little more separate from libcoll, so others can use it too.  I
	changed the prefix on the names accordingly from coll_ to elt_.
	Also, added function for getting encoding from comparison
	function.  Also, declared all elt_compare_ and elt_hash_ functions
	extern.

Thu Sep  9 09:49:29 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* LinkedListEltNode.[hm], BinaryTreeEltNode.[hm],
	RBTreeEltNode.[hm]:  Created these files and moved EltNode code
	into them.  This cleanly separates the basic LinkedList code from
	the EltNodeCollector stuff (and similarly for BinaryTree and
	RBTree).  The EltNode stuff strikes me as being a little messy;
	with this separation we can easily replace it later with something
	cleaner (if we can think of something cleaner).

	* elt.h, *.m:  Changed elt union names from *_t to *_u, following
	suggestion of Burchard:  *_t should be reserved for type names.

Tue Aug 31 11:40:29 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Storage.[hm], List.[hm]:  Removed many extra features that
	aren't in the NeXT implementations.  Our goal for these NeXT-based
	objects should be compatibility, not kitchen-sink features.  Let
	people add features in Categories if they need them.

	* Storage.[hm]:  Fixed return type for -removeLastElement to match
	NeXT.  Unfortunately this conflicts with the IndexedCollecting
	declaration (NeXT's returns self, IndexedCollecting returns the
	removed element).  I really think methods that remove elemements
	should return that element.  We're just going to have to live with
	this conflict.

	* Storage.[hm]:  Changed declaration of instance var 'dataPtr'
	from void** to void*, to match NeXT.

	* IndexedCollecting.h, IndexedCollection.m:  Added -sortContents;

Thu Aug 26 17:47:59 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* List.m:  Changed default order of -makeObjectsPerform... and
	fixed comment to match NeXTSTEP reality.

Wed Jul 10 14:38:23 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* BinaryTree.m, RBTree.m, EltNodeCollector.[hm]:  Created.

Wed Jun  2 11:48:08 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* IndexedCollecting.h:  Added
		- successorOfObject: anObject;
		- predecessorOfObject: anObject;
		- (elt)	successorOfElement: (elt)anElement;
		- (elt) predecessorOfElement: (elt)anElement;

	* BinaryTree.h, RBTree.h:  Created.

Mon May 31 13:33:42 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Time.[hm]:  Threw a Time object I wrote a while ago into the
	.tar file.  Maybe someone will find it useful.  

	* IndexedCollecting.h, IndexedCollection.m:  Added methods:
	- (unsigned) indexOfFirstDifference: (id <IndexedCollecting>)aColl;
	- (unsigned) indexOfFirstIn: (id <Collecting>)aColl;
	- (unsigned) indexOfFirstNotIn: (id <Collecting>)aColl;
	They fit well with desired functionality for Strings, but may also
	be generally useful.

	* Created preliminary String class.  It's very preliminary; I just
	want to see how it will fit with IndexedCollecting.

	* Overhauled instance variables in heirarchy.  Removed all 
	instance variables from abstract superclasses.  This makes
	subclassing an abstract superclass a bit more of a pain, but it
	helps keep memory requirements down, especially for String,
	LinkList and all IndexedCollections.

Sat May 29 11:27:01 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* IndexedCollection.m: Made cast of void* to unsigned more
	portable.

Fri May 28 17:00:14 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* IndexedCollecting.h, IndexedCollection.m:  Added
	-insertContentsOf:atIndex: modified from Kresten Krab Thorup.

	* Collecting.h, Collection.m:  Added {Object,Element} to inject,
	detect, max and min methods.

Wed May 26 12:20:21 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Overhauled error generation.  Changed #define's so error
	generation is easier to change again later, if necessary.  Error
	methods now have forwarding capability.  See CollectionPrivate.h,
	Collection.m, IndexedCollectionPrivate.h, IndexedCollection.m.

	* *.m:  Fixed many small bugs found with -Wall.

	* Created Heap object.

	* Collection.m:  Fixed -includesSameContents.

	* Collecting.h, Collection.m:  Added -isSubsetOf: as written by
	Kresten Krab Thorup.  Removed -includesSubsetOf:.

Tue May 25 14:14:33 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Removed ComparedCollecting protocol.  Its only purpose was to
	allow the user to manage a comparison function---this was silly,
	though, because there already was a comparison function inherited
	from Collection!  No need to have two of them.  Now that there is
	a general interface for user-specified comparison functions, we 
	don't need the ComparedCollecting methods.  This is a big help
	because we no longer have the problem of trying to combine a
	ComparedCollection class and Array class with some ugly multiple
	inheritance issues.  One disadvantage, however, is that it is 
	slightly more complicated to specify a comparator that is a
	selector. 

	* Overhauled comparison and hash functions.  More changes than I
	want to describe in detail here...  1) Created temporary versions
	of hash.[hc] that do what I want, hopefully Kresten's new versions
	of hash.[hc] will do something like this.  Created collhash.[hc].
	2) Added -init... methods that allow the users to specify their own
	comparison and hash functions instead of accepting the defaults.

Mon May 24 10:46:21 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Collecting.h, Collection.m: Removed -initWith:,... and
	-initDescription:with:,... methods.  I don't want to add ..with:
	version of all -init... methods.  People can use addCount,...
	instead. 

	* Created IdListLink.[hm].  Changed -linkClass in ListedList.m to
	return [IdListLink class] if LinkedList contains objects.

	* Collecting.h, elt.h: Moved definition of elt union to
	<coll/elt.h> 

	* List.m:  -isEqual: now checks [List count] at beginning.

	* List.m:  -empty no longer realloc()'s. (for compatibility with
	NeXT.)

	* List.[hm]:  Added 
	- makeObjectsPerform:(SEL)aSel reverseOrder:(BOOL)flag;
	- makeObjectsPerform:(SEL)aSel with:anObject reverseOrder:(BOOL)flag;
	and changed -makeObjectsPerform: and -makeObjectsPerform:with: to
	call them.  This gives the option of compatibility with
	pre-NeXTSTEP 3.0 List's.

Sat May 22 13:53:25 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* Collection.m, Collecting.h: Changed type of initialArg from
	void* to elt in inject.. methods. 

Fri May 21 18:52:03 1993  Andrew McCallum  (mccallum@vein.cs.rochester.edu)

	* First alpha release announced on gnu-objc@prep.ai.mit.edu

