diff options
Diffstat (limited to 'src/uscxml/interpreter/InterpreterDraft7.h')
-rw-r--r-- | src/uscxml/interpreter/InterpreterDraft7.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/uscxml/interpreter/InterpreterDraft7.h b/src/uscxml/interpreter/InterpreterDraft7.h new file mode 100644 index 0000000..e784e84 --- /dev/null +++ b/src/uscxml/interpreter/InterpreterDraft7.h @@ -0,0 +1,46 @@ +#ifndef INTERPRETERDRAFT7_H_WLJEI019 +#define INTERPRETERDRAFT7_H_WLJEI019 + +#include "uscxml/Interpreter.h" + +namespace uscxml { + +class InterpreterDraft7 : public Interpreter { + void interpret(); + void mainEventLoop(); + void exitInterpreter(); + + void microstep(const Arabica::XPath::NodeSet<std::string>& enabledTransitions); + + Arabica::XPath::NodeSet<std::string> selectEventlessTransitions(); + Arabica::XPath::NodeSet<std::string> selectTransitions(const std::string& event); + + void enterStates(const Arabica::XPath::NodeSet<std::string>& enabledTransitions); + void exitStates(const Arabica::XPath::NodeSet<std::string>& enabledTransitions); + + Arabica::XPath::NodeSet<std::string> computeExitSet(const Arabica::XPath::NodeSet<std::string>& enabledTransitions, + const Arabica::XPath::NodeSet<std::string>& statesToExit); + + Arabica::XPath::NodeSet<std::string> computeEntrySet(const Arabica::XPath::NodeSet<std::string>& transitions, + const Arabica::XPath::NodeSet<std::string>& statesToEnter, + const Arabica::XPath::NodeSet<std::string>& statesForDefaultEntry); + + Arabica::XPath::NodeSet<std::string> removeConflictingTransitions(const Arabica::XPath::NodeSet<std::string>& enabledTransitions); + Arabica::DOM::Node<std::string> getTransitionDomain(const Arabica::DOM::Node<std::string>& transition); + + Arabica::XPath::NodeSet<std::string> addDescendentStatesToEnter(const Arabica::DOM::Node<std::string>& state, + const Arabica::XPath::NodeSet<std::string>& statesToEnter, + const Arabica::XPath::NodeSet<std::string>& statesForDefaultEntry); + + Arabica::XPath::NodeSet<std::string> addAncestorsStatesToEnter(const Arabica::DOM::Node<std::string>& state, + const Arabica::DOM::Node<std::string>& ancestor, + const Arabica::XPath::NodeSet<std::string>& statesToEnter, + const Arabica::XPath::NodeSet<std::string>& statesForDefaultEntry); + + void initializeData(const Arabica::DOM::Node<std::string>& data); + +}; + +} + +#endif /* end of include guard: INTERPRETERDRAFT7_H_WLJEI019 */ |