About C!
The C! (aka C Bang or cbang) library is a collection of C++ utility libraries developed over the course of +10 years and several major C++ application development projects. It should compile and run on Windows, Linux and OSX using a modern C++ compiler.
Many of the facilities of C! are geared towards cross-platform application development and provide basic services that most applications need such as a configuration system, run-time build information, logging facilities, threads, smart pointers, simple embedded scripting, etc.
C!'s philosophy is to create clean, simple, readable, modular and reusable code. C! also encourages exception based error handling, and light use of C++ templates and C preprocessor macros.
C! "leans" on the venerable boost library but also reimplements several boost APIs which are considered by the author to be too template heavy, less readable or overly complicated in boost.
The code was developed on an as needed basis and was never intended to be any sort of grand unifying system for C++ application development. However, I hope you find many parts of the library useful in your C++ development projects.
Building C!
See: README.md.
Licensing
C! is licensed under the GNU Lesser General Public License version 2.1 or at your option any later version.
Features
This is a partial list of the features of C!:
- Smart pointers, both thread safe and non, with downcasting capability.
- Threading, mutexes, conditions & thread local storage
- Soft exit & signal handling
- Extensively configurable logging facilities.
- Exception class with stack trace capability including line and file info.
- Exception throwing and catching convenience macros.
- HTTP and HTTPS client and server.
- Socket client and server with asynchronous capability.
- XMacro based enum implementation.
- PyON Python Object Notation language for serializing and deserializing data.
- Simple scripting language for configuration and text based command server.
- Software build information system.
- A system for compiling in a directory tree of resources.
- Network packet automatic byte order and string packing functionality.
- Temporary directories, directory traversal & file operations
- C++ style number, to and from, string conversions.
- iostream utilities.
- Application configuration system.
- XML facilities.
- TAR file read and write.
- Time and timing functions.
- OpenSSL C++ interface.
- IP address / hostname resolution, parsing and manipulation.
- URL parsing.
- Geometric primitives.
- Human readable size & time formatting.
- Many other utility classes.
- Completely contained in it's own C++ namespace.