## Angry Red Planet # Collections Library |

This library contains various collection classes. None of them are currently used by the ArpLayout library, so for now there is going to be very little documentation here. In addition, there are a few classes that are currently under development but not yet usable -- nothing about them will be mentioned here.

# Classes

## ArpIndexedList (header file)

This provides relatively quick access into an index in a linked list. The current documentation for it is as a StyledEdit file in the ArpDoc/ArpCollection directory.

## ArpIndexedNode (header file)

This is a helper class for ArpIndexedList. Again, the current documentation for it is as a StyledEdit file in the ArpDoc/ArpCollection directory.

## ArpVectorI (header file)

The is a template class that defines an abstract interface into a generic "vector-like" contains. (Which happens to look much like the STL vector class.) It is intended to be used in public interfaces that need to pass arrays of objects around, instead of using raw arrays or untyped BList objects. In particular, it allows a program to use an STL vector template class to interact with the outside world: the rest of the world only sees this as an abstract ArpVectorI interface, so there is no problem if the underlying STL implementation changes.

## ArpSTLVector (header file)

This is an ArpVectorI interface that is implemented use the STL vector class. Because it is a full subclass of the STL vector (and the ArpVectorI class is designed to look like an STL vector), the interface to this class looks very much just like that STL vector... which any STL book should describe... ;)

## ArpPtrVector (header file)

This is an ArpVectorI interface that is specifically implemented for pointer-like types. That is, it should be templatized on on types such as `BView*`, `void*`, `float*`, etc. Trying to templatize it on something else -- such as a full `BMessage` -- will result in compiler errors. The reason for having this class is that it reduces the number of templates that are instantiated: all instantiations of ArpPtrVector share one common instantiation of the underlying vector implementation.

# Copyright

All files and code contained in this package are Copyright ©1998 Angry Red Planet, except where otherwise noted.

The files contained here-in are distrubuted under a modifed form of the Artistic License. See the file `@License.html` or `@License.txt` for a copy of this license.