Wiki » History » Version 10

« Previous - Version 10/25 (diff) - Next » - Current version
J. Wienke, 12/04/2010 12:40 AM


Prerequisites

Dependencies

  • Boost >= 1.38 (for hardy available in the gar-installer, 1.34.1 untested)
  • CMake (tested with 2.8)
  • optional
    • Doxygen for API generation
    • Lcov for code coverage analysis

Supported Operating Systems and Compilers

  • Linux (GCC 4.x)
  • Windows (MS Visual Studio 9 2008)

Other combination may be possible but are currently untested.

Contents

Logging Adapter

Several different logging systems exist with different advantages and dependencies. E.g. log4cxx heavily relies on APR which is a huge dependency to built i.e. for embedded systems like Nao. To decouple libraries from concrete logging implementations and their dependencies, RSC contains a flexible adaption layer that can utilize different logging mechanisms through one interface. If e.g. log4cxx is available, a client using the RSC logging system can use log4cxx through the provided interfaces. If no versatile logging system is available, RSC falls back on a simple console logging mechanism without any dependencies. Hence, client code does not need to be recompiled for changing the logging system.

Currently the linker call decides which logging mechanisms are available by linking their adapter shared libraries to the client. A plugin system is planned to remove the necessity of calling the linker.

Subprocess

A high-level interface for starting executables and automatically terminating them based on the RAII-pattern. The operating system is abstracted.

Threading

Support classes for threading tasks like synchronized queues, a task abstraction, or a thread pools for dispatching asynchronous events with ordering guarantees.

Misc

Collection of various utility classes including:
  • Registry: Key-value based registry for system components.
  • UUID: Simplified wrapper for boost::uuid.
  • Various utility functions for string manipulation or boost::shared_ptr handling.

CMake Support Library

RSC contains different CMake scripts and macros which are generally useful. These include:
  • Find macros for various software packages like spread, BoostUUID, Eigen2, Log4cxx
  • EnableConverageReport: Support for html code coverage reports on GCC using gcov and lcov.
  • CheckInitMethod: Checks which compiler-specific method can be used to execute before the main method begins. This is e.g. useful to install extensions
  • InstallFilesRecursive: A macro to install files while preserving their folder structure. The normal install macro of CMake copies all given files into a flat list at the target location.
  • ParseArguments: Helper to parse arguments to CMake macros and functions with UPPERCASE keywords to separate lists.

All CMake files are installed to $prefix/share/cmake/Modules and available in the repository at source:/trunk/rsc/cmake.

To be continued