Introduction
AnCH framework aims to provide utility classes for most common programming features. Features are implemented to be used as simply as possible.
This framework was initially a way to test new C++ specifications (C+11) and to test C++ design patterns and tricks. So be sure to have a recent C++ compiler.
Only POSIX systems are supported for now. Others could be supported later.
Features are splitted into small libraries. Some of them are only header files :
- anch-resource: provides library to parse configuration files based on C++11 regular expression library (using boost for now).
- anch-date: provides date and time facilities based on C++11 high precision clock.
- anch-logger: provides logging facilities based on C++11 thread and regular expression libraries.
- anch-events: provides event programming facilities based on C++11 thread library.
- anch-crypto: provides cryptographic library which only include hash algorithms implementation (MD5, SHA1 and SHA2) and HMAC (with implemented hashes).
- anch-device: provides device interaction library (only to retrieve network status for now).
- anch-network: provides basic API to send and receive data on TCP or UDP sockets.
- anch-sql: provides SQL client abstraction layer implementation for SQLite3, PostgreSQL and MySQL.
- anch-utils: provides some utility classes and functions. This 'library' contains header only implementations.
Each library contains unitary tests which can provide a way to use it.
If you have any ideas to simplify libraries usage or if you have any request of unimplemented features, please contact me through SourceForge interface.
If you want to be involved into AnCH framework development, you can contact me be the same way.
English is not my native language, so if something is wrong in this documentation, a bug will ever be opened to correct (or complete) it. Do not hesitate to post a comment in it.
If you wandering why this guy is developing another C++ framework, the answer is: "Because I can !" ;) ... and I don't want to depends on other libraries than mine.
I have other projects (unfinished) and I wanted to share my work with these libraries which may be used with the least possible restrictions (these libraries are LGPL).
Prerequisites
AnCH libraries have various requirements.
To use AnCH Framework in its totallity, you need:
- recent C++ compiler (such as gcc 4.8.1 or later seems to work with gcc 4.7)
- boost library (until standard C++ library implements regular expression)
- CMake
- POSIX system
Libraries dependencies
- anch-utils: Dependends on the feature (see class and function description)
- anch-resource:
- boost (until standard C++ library implements regular expression)
- anch-date:
- boost (until standard C++ library implements regular expression)
- anch-logger:
- anch-resource: parse anch-logger configuration file
- anch-date: high resolution clock (up to nanosecond)
- anch-utils: Meyer's singleton
- boost (until standard C++ library implements regular expression)
- anch-events:
- anch-utils: object instance address comparator and Meyers' singleton
- anch-crypto: nothing
- anch-device: nothing
- anch-network: nothing
Installation
TODO fill this section
Versions
AnCH framework will be released with classic version numbers (A.B.C).
Until version 1.0.0 will, the backward compatibility will not be ensure. API could change on every B changes.
From version 1.0.0, the A digit will ensure that API will be backward compatible. B digit will be used for new features and C digit for bug fixes.
TODO list
- Find a way anch-network to be easier to use.
- Implements an XML parser (SAX and DOM API) when std::basic_string manipulation (through std::codecv) will be implemented in C++ standard library.