Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities
Go to file
Martchus e9dfb505f2 added list of features 2016-02-17 20:20:37 +01:00
application added more tests, fixed some bugs 2016-01-27 02:25:28 +01:00
chrono added DateTime::gmtNow() 2016-02-15 20:29:52 +01:00
conversion added {BE,LE}::getBytes24() 2016-01-25 23:59:05 +01:00
io added BitReader::readUnsignedExpGolombCodedBits() and 2016-02-16 17:25:03 +01:00
math added functions for modulo calculations 2016-01-27 00:15:01 +01:00
misc added more tests, fixed some bugs 2016-01-27 02:25:28 +01:00
resources improved project files 2015-12-08 08:32:57 +01:00
testfiles added more tests, fixed some bugs 2016-01-27 02:25:28 +01:00
tests added BitReader::readUnsignedExpGolombCodedBits() and 2016-02-16 17:25:03 +01:00
.gitignore added more tests, fixed some bugs 2016-01-27 02:25:28 +01:00
CMakeLists.txt added BitReader::readUnsignedExpGolombCodedBits() and 2016-02-16 17:25:03 +01:00
LICENSE Create LICENSE 2015-04-22 19:01:00 +02:00
README.md added list of features 2016-02-17 20:20:37 +01:00
c++utilities.doxygen First commit 2015-04-22 18:36:40 +02:00
c++utilities.pro added BitReader::readUnsignedExpGolombCodedBits() and 2016-02-16 17:25:03 +01:00
general.pri disable new ABI (can't catch ios_base::failure with new ABI) 2015-12-13 20:42:15 +01:00

README.md

c++utilities

Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities.

Features

The library utilizes:

  • parsing command-line arguments
  • chronology (DateTime and TimeSpan classes)
  • conversion of primitive data types to byte-buffers (litte-endian, big-endian) and vice versa
  • common string conversions/operations, eg.
  • split, join, findAndReplace
  • numberToString, stringToNumber
  • encodeBase64, decodeBase64
  • IO
  • reading/writing primitive data types of various sizes (little-endian, big-endian)
  • reading/writing terminated strings and size-prefixed strings
  • bitwise reading
  • parsing INI files

Build instructions

Requirements

  • C++ compiler supporting C++11 (I've tested GNU g++, Clang and mingw-w64 yet.)
  • CMake to build
  • cppunit to build and run unit tests after building
  • The c++utilities library only depends on the C++ standard library. For Dependencies of my other projects see the README.md of these projects.

How to build

Just run:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/where/you/want/to/install" "path/to/projectdirectory"
make
make check # build and run unit tests (optional)
make install

Building with qmake is also possible:

INSTALL_ROOT="/where/you/want/to/install" qmake-qt5 "path/to/projectfile"
make && make install

Building for Windows with Mingw-w64 cross compiler can be utilized using a small cmake wrapper from Fedora:

${_arch}-cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/where/you/want/to/install" "path/to/projectdirectory"
make && make install

To create *.ico files for application icons ffmpeg is required.

In any case, the make option -j can be used for concurrent compilation.

Creating Arch Linux package

The repository PKGBUILDs (also on GitHub) contains files for building Arch Linux packages. PKGBUILD files to build for Windows using the Mingw-w64 compiler are also included.

Notes

  • Because of GCC Bug 66145 usage of the new libstdc++ ABI is currently disabled. Linking against cppunit built using new libstdc++ ABI isn't possible.

TODO

  • rewrite argument parser
  • remove unused features