The CppToolLibrary provides all the tool classes and functions for CppUnit2 and OpenTest. It is being developped with great concerns for portability.

All the functions provided by the library live in the {{{Cpp``TL}}} namespace; macros are prefixed with {{{CPPTL_}}}.

The following tools are provided:

["/Any"]:: The Any class can hold any object.
ConstString:: Thread-safe string implementation. It is immutable and use a StringConcatenator for fast concatenation. A StringBuffer is provided for consecutive string buffer growth.

["/Enumerator"]:: Allows the enumeration of a list of items. The Any``Enumerator class provides a generic wrapper that is only templated by the enumerated item type. Enumerator are provided for most common use case (map keys/values...). It is also very simple to expose an non STL iterator range as an Enumerator using Enum::sugar(). For use with CppUnit2 enumerator assertions.

["/Functor"]:: Generic functor templated only by the return and parameters type. Functors can be constructed from methods, functions or STL functors. It is also possible to bind the parameter value of a functor. Test cases delegates the execution of tests to functors.

["/Reflection"]:: Small reflection library. It can be used to dynamically call C++ classes from some scripted test cases.

/SharedPtr:: A thread-safe smart-pointer with reference counting.

/StringTools:: String utility functions to convert values to/from string.

/TypeInfo:: A portable type-id mecanism that relying on RTTI if enabled or an hand-made RTTI otherwise.

/TypeName:: Utility functions to demangle type names.
