Overview

HTTPS SSH
      BOTOND'S COLLECTION OF COMMON UTILITIES (BCCU)
    ==================================================  
          a C++ utility library, by Botond Ballo
    

Copyright (C) 2009-2013, Botond Ballo.


Botond's Collection of Common Utilities (BCCU) is a header-only
C++ library containing general utilities.

BCCU is intended to be cross-platform between Windows and Linux; 
however, a few features are currently only implemented for Windows.

BCCU uses C++11 features and does not aim to be backwards-compatible 
to C++03.

BCCU is free software, licensed under the GNU Lesser General Public
License, version 3 or later. Please see the accompanying file
LICENSE.txt for the license text.

The library's folder structure is as follows:
  bccu/
    core/
    os/
    ui/
      console/
      gui/
        wt/
        wx/
  library-extensions/
  library-fixes-eclipseonly/
  test/
  
The 'bccu' folder contains the actual library headers, which are
divided into 3 sub-libraries: 'core' contains core general-purpose
utilities; 'os' contains wrappers around operating system
functionality; and 'ui' contains utilities for building user 
interfaces. The 'ui' folder is further subdivided into 'console',
which contains utilities for console applications, and 'gui',
which contains utilities for GUI applications using various UI
toolkits ('gui/wt' contains utilities for the Wt libraries;
'gui/wx contains utilities for the wxWidgets libraries; the
rest of 'gui' contains general utilities that may be applicable
to either and even to other GUI frameworks).

The 'library-extensions' folder contains extensions to dependent
libraries such as Boost, which are either used by BCCU, or are
commonly used by clients of BCCU, and which are likely to be added
to the dependent library in question in the future. Currently,
the only extension in there is parts of Akira Takahashi's proposed
OvenToBoost extensions to the Boost.Range library.

The 'library-fixes-eclipseonly' folder exists solely to help provide
a better experience when using the Eclipse CDT IDE 
(http://eclipse.org/cdt/) to develop code using BCCU. It helps work
around certain bugs and missing features in Eclipse CDT. For details,
read the README file in that folder. Please ignore this folder if
you don't use Eclipse CDT as your IDE (and feel free to ignore it
even if you do).

The 'test' folder contains the beginnings of a test suite for BCCU.
Contributions are welcome!

BCCU depends on the Boost libraries (http://www.boost.org/). Parts
of BCCU also depend on cpp-netlib (http://cpp-netlib.github.com/),
wxWidgets (http://www.wxwidgets.org/), the Wt libraries 
(http://www.webtoolkit.eu), and the Win32 API. For these latter 
four, parts of BCCU that do not require them will function in 
their absence.

Note that BCCU uses version 3 of the Boost.Phoenix library. By
default Boost.Spirit uses version 2, which can cause a clash if you
try to use both Boost.Spirit and BCCU. The workaround is to define 
the macro BOOST_SPIRIT_USE_PHOENIX_V3 when using both libraries.

Certain aspects of BCCU's behaviour can be manipulated by defining
the following preprocessor symbols before including any BCCU header:

BCCU_DISABLE_WARNINGS
  Calls to warning() will not output anything.
 
BCCU_DEBUG_MODE
  Calls to debug() will output the passed message along with a 
  timestamp.

BCCU_DONT_DEFINE_GLOBAL_MACROS
  The library will only define macros whose names begin with 'BCCU_'.
  Specifically, the macros 'foreach', 'auto_foreach', 'RETURNS', and
  'MEMBERS' will not be defined. Instead, 'BCCU_FOREACH', 
  'BCCU_AUTO_FOREACH', 'BCCU_RETURNS', and 'BCCU_MEMBERS' can be used.
  
BCCU_USE_COMMAND_LINE_ARGS
  The macro BCCU_GUI_ENTRY_POINT(App) will expect 'App' to have a
  constructor with the signature (int argc, char** argv).
  
BCCU_NO_WAIT_FOR_INPUT
  The macro BCCU_MAIN will not emit a call to bccu::wait_for_input()
  at the end of main().
  
BCCU_NO_MULTITHREADING
  The library will not assume presence of C++11 threading support
  in the standard library.