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.