MicroStepImpl.h
Go to the documentation of this file.
1 
20 #ifndef MICROSTEPIMPL_H_98233709
21 #define MICROSTEPIMPL_H_98233709
22 
23 #include "uscxml/config.h"
24 
25 #include <list>
26 #include <string>
27 #include <xercesc/dom/DOM.hpp>
28 
29 #include "uscxml/Common.h"
30 #include "uscxml/Interpreter.h"
31 #include "uscxml/messages/Event.h"
32 
33 
34 namespace uscxml {
35 
40 class USCXML_API MicroStepCallbacks {
41 public:
43  virtual Event dequeueInternal() = 0;
44  virtual Event dequeueExternal(bool blocking) = 0;
45  virtual bool isMatched(const Event& event, const std::string& eventDesc) = 0;
46  virtual void raiseDoneEvent(XERCESC_NS::DOMElement* state, XERCESC_NS::DOMElement* doneData) = 0;
47 
49  virtual bool isTrue(const std::string& expr) = 0;
50  virtual void initData(XERCESC_NS::DOMElement* element) = 0;
51 
53  virtual void process(XERCESC_NS::DOMElement* block) = 0;
54 
56  virtual void invoke(XERCESC_NS::DOMElement* invoke) = 0;
57  virtual void uninvoke(XERCESC_NS::DOMElement* invoke) = 0;
58 
60  virtual InterpreterMonitor* getMonitor() = 0;
61 };
62 
67 class USCXML_API MicroStepImpl {
68 public:
69  enum Binding {
70  EARLY = 0,
71  LATE = 1
72  };
73 
74  MicroStepImpl(MicroStepCallbacks* callbacks) : _callbacks(callbacks) {}
75 
76  virtual InterpreterState step(bool blocking) = 0;
77  virtual void reset() = 0;
78  virtual bool isInState(const std::string& stateId) = 0;
79  virtual std::list<XERCESC_NS::DOMElement*> getConfiguration() = 0;
80 
81  virtual void init(XERCESC_NS::DOMElement* scxml) = 0;
82  virtual void markAsCancelled() = 0;
83 
84 protected:
85  MicroStepCallbacks* _callbacks;
86 
87 };
88 
89 }
90 
91 #endif /* end of include guard: MICROSTEPIMPL_H_98233709 */
Definition: MicroStepImpl.h:67
Definition: InterpreterIssue.cpp:33
Definition: InterpreterMonitor.h:46
Definition: MicroStepImpl.h:40
Definition: Event.h:84