InterpreterMonitor.h File Reference
#include "uscxml/Common.h"
#include "uscxml/messages/Event.h"
#include "uscxml/interpreter/Logging.h"
#include "uscxml/debug/InterpreterIssue.h"
#include <mutex>
Include dependency graph for InterpreterMonitor.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uscxml::InterpreterMonitor
 
class  uscxml::StateTransitionMonitor
 

Macros

#define USCXML_MONITOR_CALLBACK(callbacks, function)
 
#define USCXML_MONITOR_CALLBACK1(callbacks, function, arg1)
 
#define USCXML_MONITOR_CALLBACK2(callbacks, function, arg1, arg2)
 
#define USCXML_MONITOR_CATCH(callback)
 

Detailed Description

Macro Definition Documentation

#define USCXML_MONITOR_CALLBACK (   callbacks,
  function 
)
Value:
{ \
Interpreter inptr = _callbacks->getInterpreter(); \
for (auto callback : callbacks) { callback->function(inptr); } }
#define USCXML_MONITOR_CALLBACK1 (   callbacks,
  function,
  arg1 
)
Value:
{ \
Interpreter inptr = _callbacks->getInterpreter(); \
for (auto callback : callbacks) { callback->function(inptr, arg1); } }
#define USCXML_MONITOR_CALLBACK2 (   callbacks,
  function,
  arg1,
  arg2 
)
Value:
{ \
Interpreter inptr = _callbacks->getInterpreter(); \
for (auto callback : callbacks) { callback->function(inptr, arg1, arg2); } }
#define USCXML_MONITOR_CATCH (   callback)
Value:
catch (Event e) { LOG(USCXML_ERROR) << "Syntax error when calling " #callback " on monitors: " << std::endl << e << std::endl; } \
catch (std::bad_weak_ptr e) { LOG(USCXML_ERROR) << "Unclean shutdown " << std::endl; } \
catch (...) { LOG(USCXML_ERROR) << "An exception occurred when calling " #callback " on monitors"; } \
if (_state == USCXML_DESTROYED) { throw std::bad_weak_ptr(); }