ALib is a general purpose, use-case agnostic, platform independent, low-level C++ class library.
Its mission is to provide foundational concepts, types and idioms relevant to any C++ project. As of today, ALib consists of 15 modules, each addressing different topics.
A subset of the available modules can be selectively included in a custom library build. This means, you just get what you choose from the menu.
Some highlights of the functionality:
The following documentation is provided.
The current release got tested on the following platform combinations:
Check out chapter 5. Building The Library for details of how to compile and use ALib in your C++ environment.
Parts of ALib have sibling incarnations in programming languages C# and JAVA. Historically, ALib aimed to be a cross platform/cross language library. This goal was (mostly) dropped in favour to be able to independently develop ALib for C++.
ALib for C# and ALib for Java are included in and distributed with the cross platform ALox Logging Library .
For C++, since May 2018 release, the situation was inverted: Instead of having ALib bundled with ALox , the logging library is now an ALib Module .
ALib is free software, can be downloaded at Github and sources are published under Boost Software License:
Boost Software License - Version 1.0 - August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ALib compiles as is, hence it is not dependent on any 3rd-party library. Optional dependencies exist. For example if boost is available, ALib Strings are using its regex search.
In contrast, ALib provides optional compatibility headers for 3rd-party libraries (e.g. QT Class Library ), which for example provide adoptions of ALib type-traits for QT-types.
We would be happy, if the community started to support this library and are willing to receive contributions and, if accepted, to update the code accordingly.
Note that for legal reasons, we hereby explicitly refuse and reject code (or ideas for code) that are not explicitly provided under the Boost Software License. Please do not even contact us with your ideas/code in that case.
Our thanks go to all supporters that did and do help realizing this project. Furthermore to just all of these millions of supporters of free software, including:
Special thanks also to C. Darwin, who created life on earth hundreds of millions of years ago, until he - when things became too crazy - disappeared in 1882.