/** \page lout Lots of Useful Tools
In the "lout" directory, there are some common base functionality for
C++. Most is described as doxygen comments, this text gives an
overview.
Common Base Class
Many classes are derived from object::Object, which defines some
general methods. See there for more information.
For the case, that you need primitive C++ types, there are some
wrappers:
C++ Type | Wrapper Class
|
---|
void* | object::Pointer
|
specific pointer | object::TypedPointer (template class)
|
int | object::Integer
|
const char* | object::ConstString
|
char* | object::String
|
Containers
In the namespace ::container, several container classes are defined,
which all deal with instances of object::Object.
Untyped Containers
In container::untyped, there are the following containers:
- container::untyped::Vector, a dynamically increases array,
- container::untyped::List, a linked list,
- container::untyped::HashTable, a hash table, and
- container::untyped::Stack, a stack.
All provide specific methods, but since they have a common base class,
container::untyped::Collection, they all provide iterators, by the
method container::untyped::Collection::iterator.
Typed Containers
container::typed provides wrappers for the container classes defined
in container::untyped, which are more type safe, by using C++
templates.
Signals
For how to connect objects at run-time (to reduce dependencies), take a
look at the ::signal namespace.
There is also a base class signal::ObservedObject, which implements
signals for deletion.
Debugging
In debug.hh, there are some some useful macros for debugging messages,
see the file for mor informations.
Identifying Classes at Runtime
If the class of an object must be identified at runtime,
identity::IdentifiableObject should be used as the base class, see
there for more details.
Miscellaneous
The ::misc namespace provides several miscellaneous stuff:
- In some contexts, it is necessary to compare objects
(less/greater), for this, also misc::Comparable must be
implemented. For example., container::untyped::Vector::sort and
container::typed::Vector::sort cast the elements to
misc::Comparable. This can be mixed with object::Object.
- misc::SimpleVector, a simple, template based vector class (not
depending on object::Object),
- misc::StringBuffer, class for fast concatenation of a large number
of strings,
- misc::BitSet implements a bitset.
- useful (template) functions (misc::min, misc::max), and
- some functions useful for runtime checks (misc::assert,
misc::assertNotReached).
*/