AnCH Framework 0.1
Another C++ Hack Framework
Loading...
Searching...
No Matches
AnCH Framework

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 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.
  • anch-uuid: provides UUID library.
  • anch-json: provides JSON serialization/deserialization library.
  • anch-cli: provides command line interface utilities (parse arguments only for now).
  • anch-ut: provides unit tests library.

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 10.x or later)
  • 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: nothing
  • anch-date: nothing
  • anch-logger:
    • anch-resource: parse anch-logger configuration file
    • anch-date: high resolution clock (up to nanosecond)
    • anch-utils: Meyer's singleton
  • anch-events:
    • anch-utils: object instance address comparator and Meyers' singleton
  • anch-crypto:
    • anch-uuid: to provide MD5 and SHA1 UUID variants implementations
  • anch-device:
    • anch-uuid: to provide MAC UUID variant implementation
  • anch-network: nothing
  • anch-sql:
    • anch-utils: SQL connection pool
    • anch-resource: SQL database and connection pool configuration
  • anch-uuid: nothing
  • anch-json: nothing
  • anch-cli: nothing
  • anch-ut:

Installation

make install

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.