summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Interpreter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/Interpreter.h')
-rw-r--r--src/uscxml/Interpreter.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/uscxml/Interpreter.h b/src/uscxml/Interpreter.h
index 3cd6016..c3acc98 100644
--- a/src/uscxml/Interpreter.h
+++ b/src/uscxml/Interpreter.h
@@ -435,6 +435,8 @@ public:
Arabica::DOM::Node<std::string> findLCCA(const Arabica::XPath::NodeSet<std::string>& states);
virtual Arabica::XPath::NodeSet<std::string> getProperAncestors(const Arabica::DOM::Node<std::string>& s1, const Arabica::DOM::Node<std::string>& s2);
+ virtual void handleDOMEvent(Arabica::DOM::Events::Event<std::string>& event);
+
protected:
static void run(void*); // static method for thread to run
@@ -512,19 +514,19 @@ protected:
virtual void executeContent(const Arabica::DOM::NodeList<std::string>& content, bool rethrow = false);
virtual void executeContent(const Arabica::XPath::NodeSet<std::string>& content, bool rethrow = false);
- void processContentElement(const Arabica::DOM::Node<std::string>& element,
+ void processContentElement(const Arabica::DOM::Element<std::string>& element,
Arabica::DOM::Node<std::string>& dom,
std::string& text,
std::string& expr);
- void processParamChilds(const Arabica::DOM::Node<std::string>& element,
+ void processParamChilds(const Arabica::DOM::Element<std::string>& element,
std::multimap<std::string, Data>& params);
- void processDOMorText(const Arabica::DOM::Node<std::string>& element,
+ void processDOMorText(const Arabica::DOM::Element<std::string>& element,
Arabica::DOM::Node<std::string>& dom,
std::string& text);
- virtual void send(const Arabica::DOM::Node<std::string>& element);
- virtual void invoke(const Arabica::DOM::Node<std::string>& element);
- virtual void cancelInvoke(const Arabica::DOM::Node<std::string>& element);
+ virtual void send(const Arabica::DOM::Element<std::string>& element);
+ virtual void invoke(const Arabica::DOM::Element<std::string>& element);
+ virtual void cancelInvoke(const Arabica::DOM::Element<std::string>& element);
virtual void internalDoneSend(const Arabica::DOM::Element<std::string>& state);
static void delayedSend(void* userdata, std::string eventName);
void returnDoneEvent(const Arabica::DOM::Node<std::string>& state);
@@ -540,7 +542,8 @@ protected:
std::map<std::string, Invoker> _invokers;
std::map<Arabica::DOM::Node<std::string>, ExecutableContent> _executableContent;
- /// TODO: We need to adapt them when the DOM is operated upon
+ std::map<std::pair<Arabica::DOM::Node<std::string>, Arabica::DOM::Node<std::string> >, Arabica::XPath::NodeSet<std::string> > _cachedProperAncestors;
+ std::map<Arabica::DOM::Element<std::string>, Arabica::XPath::NodeSet<std::string> > _cachedTargets;
std::map<std::string, Arabica::DOM::Element<std::string> > _cachedStates;
std::map<std::string, URL> _cachedURLs;