Go to the first, previous, next, last section, table of contents.
The GNU classes included in this version of the library fall into five
categories: collections, magnitudes, streams, coders and remote
messaging support.
- The collection objects all conform to the `Collecting'
protocol. Reading `./objects/Collecting.h' is a good place to
start. Protocols for collections that store their contents with keys
and with indices can be found in `./objects/KeyedCollecting.h' and
`./objects/IndexedCollecting.h' respectively. Examples of generic
collections are `Set' and `Bag'. The keyed collections are
`Dictionary' and `MappedCollector'. The classes `Array',
`Queue', `GapArray', `LinkedList', `BinaryTree',
`RBTree' and `SplayTree' are all indexed collections.
- The useful magnitude classes are `Time' and `Random'.
The `Random' class works in conjunction with pseudo-random number
generators that conform to the `RandomGenerating' protocol. The
conforming class `RNGBerkeley' provides identical behavior to the
BSD random() function. The class `RNGAdditiveCongruential' is an
implementation of the additive congruential method.
- Stream objects provide a consistent interface for reading and
writing bytes. Read `./objects/Stream.h' to get the general idea.
`StdioStream' objects work with files, file descriptors, FILE
pointers and pipes to executables. `MemoryStream' objects work
with memory buffers.
- Coders provide a formatted way of writing to Streams. After a
coder is initialized with a stream, the coder can encode/decode
Objective C objects and C types. See `./objects/Coder.h' for the
abstract superclass interface; see `./objects/Coding.h' for the
protocol adopted by objects that read and write themselves using coders.
The currently available concrete coders are `BinaryCoder', for
reading and writing a compact stream of illegible bytes, and
`TextCoder', for reading and writing human-readable text.
Coders and streams can be mixed and matched so that programmers can
choose the destination and the format separately.
Neither the stream or coder class heirarchies are very mature yet. I
threw them together because I needed them for remote object messaging.
- The remote object messaging support classes are `Connection',
`Proxy', `ConnectedCoder', `Port' and `SocketPort'.
Go to the first, previous, next, last section, table of contents.