PureFSM
State Machine Logger

A State Machine Logger is required to define two methods:

Template method write, that allows to inspect types

template <typename T>
void write(const char*);

Type inspectation implemented by compile-time reflection. To get a type name, use pure::logger::type_name function. Note that compile-time type reflection is a compiler-dependent feature. It should work with GNU GCC, Clang, MSVC, Intel C++ Compiler and DMC.

And non-template method write, that allows to just send log messages

void write(const char*);

Template write method supposed to use compile-time reflection. The possible log message may be "${str}: ${type}".

By default State Machine uses pure::empty_logger.