LIBCXX Class Collection


Installation, and requirements


This is a library of C++11 application classes and templates that's focused on the following areas of functionality:

  • C++ classes for implementing Linux kernel-specific interfaces, such as event, timer, and signal file descriptors.

  • Templates for reference-counted objects that offer a much richer set of functionality than shared_ptr. The x::ref, x::ptr, x::const_ref, and x::const_ptr templates implement semantic concepts that are analogous to the conceptual differences between a iterator and const_iterator, as well as a native pointer and a native reference, in the C++ language.

    The reference-counted object implementation is based on a virtual object superclass root, enabling proper support of multiple inheritance in the context of a reference-counted object-based framework; as well as destructor callbacks that implement useful design patterns where something needs to be done after something else, such as a request or a message of some kind, gets processed, without something else really caring what something is.

  • Weak containers, a further extension of this reference-counted object framework, and reference-counted thread objects; as well as a number of high-level design patterns for multi-threaded applications, based on the C++11 thread library.

  • HTTP client and server classes; FTP clients; including SSL/TLS, with a reference-counted GnuTLS library classes.

  • MIME classes and templates.

  • Reading and writing XML and YAML documents.

  • Accessing SQL databases.

This is just a brief overview, see the table of contents for a more complete list of the classes and templates in this library. The Stasher object repository server uses this library; LIBCXX was originally developed as part of Stasher. After generic classes and templates in Stasher exceeded the size and scope of all other classes and templates, they were separated into a standalone library, LIBCXX.

LIBCXX is free software, distributed under the terms of the GPL, version 3.