/cpp-events

Primary LanguageC++MIT LicenseMIT

CppEvents - event/delegate (signal/slot) mechanism implementation for C++

    http://code.google.com/p/cpp-events/

Library is written in C++03 and does not use C++0x features. For generating
variadic templates custom preprocessor was written. It was named MCS, that
stands for Monkey Coding Script;) The MCS executable is an interpreter for
the custom scripting language specially designed for generating plain text
files. Script files are named by appending '.mcs' suffix to the name of the
output file, e.g. script file named 'ArgList.hpp.mcs' is used for generating
source file 'ArgList.hpp'. This distribution contains both MCS script files
and generated C++ source files, so you do not need to build the MCS executable
if you are not going to edit library sources.

The MCS executable is built using GNU Bison (version 2.4.1) and Flex (version
2.5.35). Bison version 2.3.1 and Flex version 2.5.4 do not work, other version
were not tested.

Windows executable for Bison was used from the GnuWin32 project, and the one
for Flex - from the Cygwin project.

Files that were generated by Bison and Flex are also included into this
distribution.

Google C++ Testing Framework is required for building unit test suit. If
framework is not be found then building unit test suilt is skipped. Elsewise
Test suit is built and executed as a part of the building process. It is
strongly recommended to install the Framework, build and run test suit on your
system.

 > Note! In default distribution of Google C++ Testing Framework project files
 > for MSVS are configured for linking against static runtime library. This
 > should be reverted to the DLL versions.

Distribution also contains set of execution speed tests that include tests for
CppEvents, Boost.Signals, LigSigC++, SigSlot, Qt and C#. These tests are built
if dependency library is found.

C# test is not included in CMake build files, but can be built using native
MSVS project. Please note that C# test runs very quickly, but hangs for a very
long time when it comes to garbage collection.

Library uses CMake as a distribution build system but native MSVS 2005 project
files are included in the distribution as well. Project files are separated
from sources and located in the 'build' subdirectory.

Subdirectory 'build/cmake' contains input files for CMake. Subdirectory
'build/cmake.out' is a storage for files generated by CMake and is originally
empty. In order to build library and tests with CMake change your working
directory to 'build/cmake.out' and run 'cmake ../cmake' command. Directory
'build/cmake.out' will contain project files for your native build system.

Subdirectory 'build/msvs2005' contains native project files for MSVS. These
are origianl IDE files used for development. They expect that all dependecies
are available and do not run unit tests automatically.

After building the library, add path to the 'src' subdirectory to the list of
the system include directories and path to the 'lib' subdirectory to the list
of the library directories.

The MCS interpreter is not built automatically when building the library and
should be built separately if needed. This is done so because Bison and Flex
are likely to be the source of problems when building the interpreter. I don't
want this to break the entire building process.

Separate tree of project files for building interpreter is located in
subdirectory 'tools/mcs/build'. Use it as described above. Resulting executable
should be located in the directory 'tools/mcs/bin/Release' or 'tools/mcs/bin'.

I hope this library will be useful to you. If you have any comments, questions,
ideas or propositions please e-mail me. All feedback will be much appreciated. 

                                                            Nickolas V. Pohilets
                                                            (pohilets@gmail.com)