libbsl (Basic System Library) is a powerful, easy to use and fully thread safe C++ template class library for frequently recurring (machine/OS oriented) programming problems. All fundamental objects in libbsl are freely copyable and shareable between an arbitrary number of threads - e.g. reading from a shared io device from several concurrent threads is implicitly thread safe for the programmer without additional cost and knowledge.
An important goal in developing libbsl was to keep it simple and to enable even the inexperienced programmer to quickly write complex programs with the help of libbsl. This goal is achieved by hiding most of the templates - and there are many - from the api by several reasonable typedefs.
On the other hand the generic template architecture of libbsl allows the more adept user to enhance (e.g. by the use of policy templates) or by combining libbsl's classes to create new objects or user defined functionality.
libbsl is divided into 13 main topics - namely:
cryptographic classes (AES, ElGamal etc.) mainly for secure
date, time and timer classes
dynamic loadable C++ objects which remain dynamic_castable
file, directory, character devices etc. classes.
tcp/udp ipv4 (secure) socket classes etc.
program execution class, lightweight process class which enables you
to design your own fine grained program logic by the use of freely
configurable suspend an resume functions per process
error handling and logging mechanisms via syslog, files etc.
mime type detection using ternary search trees
command line options and environment setting classes
easy to use thread class, mutexes, barriers, transfer of program tasks
to threads by the use of thread functors etc.
type traits, type lists etc.
memory management, factories, daemon class, functors, "switchless"
intelligent state machine implementation, utf8 string class and much more
parameter (pair of arbitrary values as text), tuple, variant etc.
libbsl is distributed in source and binary versions. Binary versions for
libbsl-VERSION.[deb|rpm]libbsl runtime libraries
libbsl-crypto-VERSION.[deb|rpm]libbsl crypto extension
libbsl-qt-VERSION.[deb|rpm]libbsl Qt extension
libbsl-dev-VERSION.[deb|rpm]include files an static libraries
libbsl is designed and written by Jan Uschok. Some parts - especially the functor and typelist classes - are inspired by Andrei Alexandrescu (Modern C++ Design, Addison Wesley, 2001).
Binary distribution files and source tarballs of libbsl can be found here.
Please have a look at my other project iFactory which is based on libbsl.