Common Versatile Multi-purpose Library for C++

The purpose of this C++ library is to offer common useful features that are not already found in the Standard Template Library or in BOOST. It is assumed that users of the library are familiar with both, and both are required by this library.

See the Release Notes for changes and open issues per release.

Namespaces

Everything except the OMPTL lives in the namespace cvmlcpp. The OMPTL lives in a separate namespace omptl.

Compiling and Linking

Compiling requires the presence of boost's headers. You may need to link programs using cvmlcpp against libcvmlcpp, i.e. use -lcvmlcpp, but this usually not needed.

Cvmlcpp uses a simple build system, this can also be used for external projects.

Library Structure

array
[Array toolkit]
BlitzArray Wrapper providing compatibility between CVMLCPP and the array class of the blitz++ object-oriented scientific computing library
ArrayIO IO for arrays.
base
[Basic structures]
Allocators Memory allocators.
Copy-On-Write Memory-efficient resource-management.
CyclicBuffer A cyclic container, useful for storing the last N values from a given source.
DirectoryTokenizer Recursive scanning of directories.
Enums Commonly used enumerations such as X Y Z
Functors Various useful functors, such as 'Select1st'.
Holder A framework for managing polymorphic objects in containers.
IDGenerators Various ways of generating unique identifiers for different purposes.
Log Log file manager.
Matrix Regular and compressing resizable N-dimensional Matrices.
Meta Meta-Programming tools.
StopWatch Time measurement.
Storage Generic storage facility for key/value pairs.
StringTools Conversion of objects and ranges from and to std::string.
Vectors Mathematic Vectors and corresponding operators.
math
[Mathematics Kit]
Euclid Points, vectors, lines and triangles.
Math Various Mathematical add-ons, including Constants such as Pi, functions such as log2(), procedures such as Newton-Raphson and Runge-Kutta 4.
Polynomial Convenient representation of polynomials, offers evaluation and derivation.
Splines Interpolation.
signal
[Signal Processing Kit]
Channel A model of DMC commonucation channels.
Communication A toolkit for communication over a noisy channel using LDPC codes.
Fourier Fourier transforms, frontend for FFTW.
Histogram A histogram, behaving much like a container.
LDPCCode Low-Density Parity Check Error-Correcting Codes for communication.
Processing Standard functions such as convolution.
volume
[Volume Processing Kit]
DTree Regular spatial trees such as Quadtrees and Octrees.
Facet Facet templates for Geometry.
Geometry Surface-models of 3D objects.
VolumeIO IO for volume structures such as STL files and 3D voxel arrays.
GeometryTools Tools for Geometries.
SurfaceExtractor Convert voxel data to a surface-model.
Voxelizer Convert a surface-model to voxel data.
VoxelTools Voxel-data processing tools.
omptl
[OpenMP Template Library]
omptl_algorithm An OpenMP based parallelization of the STL's algorithm library.
omptl_numeric An OpenMP based parallelization of the STL's numeric library.

Contributions

Information about making contributions can be found at the page for implementors.

Disclaimer

Use at your own risk....