Alpha Release of the Collection Library for GNU Objective-C
WARNING: This library is still in alpha release, and has not been
thoroughly tested. I am making it public now in order to get feedback
on design issues. A further warning: The API may still change before
the first official release---if you write code based on this library
you may later have to update your code to match.
------------------------------------------------------------------
* Where can you get it? How can you compile it?
By anonymous ftp at
cs.rochester.edu:pub/libcoll/libcoll-yymmdd.tar.gz
where yymmdd is some string of numbers specifying its date.
The library requires gcc 2.5.0 or higher. See the INSTALL file for
more instructions.
------------------------------------------------------------------
* What is the Collection library?
It's a library of Objective-C objects with similar functionality to
Smalltalk's Collection objects. It includes: Set, Bag, Array,
CircularArray, GapArray, Queue, Stack, Heap, LinkedList, BinaryTree,
SplayTree, RBTree, Dictionary, MappedCollector, EltNodeCollector and
DelegateList.
Outside of its main heirarchy it also includes List, HashTable and
Storage objects compatible with NeXT's objects of the same name.
This release also includes a very preliminary version of a String
object. I threw it together mostly as a thought-experiment to make
sure that my changes to the IndexedCollection abstract superclass
would fit well with a String class. Many methods are left
unimplemented; it is not useable.
As an extra plus, the .tar file includes classes Magnitude and Time.
Eventually the .h files for these will be moved outside of the "coll"
directory.
Here is the object inheritance heirarchy. All protocols end with
"ing"; all collection protocols end with "Collecting". All collection
abtract superclasses (classes which are not usable without
subclassing) end with "Collection";
Collection <Collecting>
Set
Bag
KeyedCollection <KeyedCollecting>
Dictionary
MappedCollector
IndexedCollection <IndexedCollecting>
Array
Stack
GapArray
CircularArray
Queue
Heap
LinkedList
BinaryTree
RBTree
EltNodeCollector
String
DelegateList
LinkedListNode
LinkedListEltNode
BinaryTreeNode
BinaryTreeEltNode
RBTreeNode
RBTreeEltNode
HashTable
List
Storage
------------------------------------------------------------------
* What's new in this release?
- Installation using ./configure and autoconf
- New BinaryTree and RBTree(unfinished) classes. Rewritten LinkedList
class.
- A new scheme for holding non-object elements in classes that require
object contents; EltNodeCollector class.
- Archiving with -write: and -read: methods. This involved removing
the ability to set the comparison function independent of content
type.
- Removed COLL_NO_ELEMENT and friends. Now there are no arbitrary
restrictions on which long int's can be stored. Like in Smalltalk,
...ifAbsentCall: methods have been added to replace this functionalty.
- Added a LABMDA() macro for defining small functions in the arg position.
- Removed many ...perform: methods. Use instead the more flexible
...call: methods with LABMDA().
- Renamed ...Description: methods to ...Encoding: for better use of
already-defined objc keyword: @encode().
- New in the Collecting protocol:
+ Filtered enumerating instead of filtered shallowCopy'ing.
+ Enumerations still safe when modifying the contents.
- The beginnings of documentation in libcoll.texi.
- Many bug fixes.
...and more.
See also the ChangeLog for notes about the differences between this
release and the last.
------------------------------------------------------------------
* How can you help?
- Read the questions in TODO.texi. If you have any useful comments
mail them to me!
- Give me feedback! Tell me what you like, tell me what you think
could be better. Send me bug reports.
- Donate classes. If you write classes that fit in the libcoll
framework, I'd be happy to include them.
------------------------------------------------------------------
R. Andrew McCallum ARPA: mccallum@cs.rochester.edu
Computer Science Department UUCP: uunet!cs.rochester.edu!mccallum
University of Rochester VOX: (716) 275-2527
Rochester, NY 14627-0226 FEET: CSB Rm. 625
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.