20 #ifndef DEBUGGERMONITOR_H_Z050WPFH
21 #define DEBUGGERMONITOR_H_Z050WPFH
38 virtual void attachSession(
InterpreterImpl* impl, std::shared_ptr<DebugSession> session) {
39 std::lock_guard<std::recursive_mutex> lock(_sessionMutex);
40 _sessionForInterpreter[impl] = session;
44 std::lock_guard<std::recursive_mutex> lock(_sessionMutex);
45 _sessionForInterpreter.erase(impl);
48 virtual std::shared_ptr<DebugSession> getSession(
InterpreterImpl* impl) {
49 std::lock_guard<std::recursive_mutex> lock(_sessionMutex);
50 if (_sessionForInterpreter.find(impl) != _sessionForInterpreter.end())
51 return _sessionForInterpreter[impl];
52 return std::shared_ptr<DebugSession>();
55 virtual void pushData(std::shared_ptr<DebugSession> session,
Data pushData) = 0;
58 virtual void beforeProcessingEvent(
Interpreter& interpreter,
const Event& event);
59 virtual void beforeMicroStep(
Interpreter& interpreter);
60 virtual void beforeExitingState(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* state);
61 virtual void afterExitingState(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* state);
62 virtual void beforeExecutingContent(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* execContent);
63 virtual void afterExecutingContent(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* execContent);
64 virtual void beforeUninvoking(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* invokeElem,
const std::string& invokeid);
65 virtual void afterUninvoking(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* invokeElem,
const std::string& invokeid);
66 virtual void beforeTakingTransition(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* transition);
67 virtual void afterTakingTransition(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* transition);
68 virtual void beforeEnteringState(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* state);
69 virtual void afterEnteringState(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* state);
70 virtual void beforeInvoking(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* invokeElem,
const std::string& invokeid);
71 virtual void afterInvoking(
Interpreter& interpreter,
const XERCESC_NS::DOMElement* invokeElem,
const std::string& invokeid);
72 virtual void afterMicroStep(
Interpreter& interpreter);
73 virtual void onStableConfiguration(
Interpreter& interpreter);
74 virtual void beforeCompletion(
Interpreter& interpreter);
75 virtual void afterCompletion(
Interpreter& interpreter);
80 const XERCESC_NS::DOMElement* transition,
81 Breakpoint::When when);
83 const XERCESC_NS::DOMElement* state,
84 Breakpoint::When when,
85 Breakpoint::Action action);
87 const XERCESC_NS::DOMElement* invokeElem,
88 const std::string& invokeId,
89 Breakpoint::When when,
90 Breakpoint::Action action);
92 const XERCESC_NS::DOMElement* execContentElem,
93 Breakpoint::When when);
94 void handleStable(
Interpreter& interpreter, Breakpoint::When when);
95 void handleMicrostep(
Interpreter& interpreter, Breakpoint::When when);
96 void handleEvent(
Interpreter& interpreter,
const Event& event, Breakpoint::When when);
98 std::list<Breakpoint> getQualifiedTransBreakpoints(
InterpreterImpl* impl,
99 const XERCESC_NS::DOMElement* transition,
101 std::list<Breakpoint> getQualifiedStateBreakpoints(
InterpreterImpl* impl,
102 const XERCESC_NS::DOMElement* state,
104 std::list<Breakpoint> getQualifiedInvokeBreakpoints(
InterpreterImpl* impl,
105 const XERCESC_NS::DOMElement* invokeElem,
106 const std::string invokeId,
109 std::recursive_mutex _sessionMutex;
Definition: Breakpoint.cpp:26
Definition: InterpreterMonitor.h:56
Central class to interpret and process SCXML documents.
Definition: Interpreter.h:79
std::map< InterpreterImpl *, std::shared_ptr< DebugSession > > _sessionForInterpreter
Definition: Debugger.h:111
Definition: InterpreterImpl.h:48
Definition: Breakpoint.h:36
Definition: Debugger.h:32