summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Interpreter.h
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-08-03 12:10:57 (GMT)
commit6e1a4a67d5b17e92135cd3f5daf51bf044d76e40 (patch)
tree63d8de9a5ba99dbcd16c6bd867241a7e7466c559 /src/uscxml/Interpreter.h
parent37f8735a66aadd0e3f019f5edbb9356cf4a7b974 (diff)
downloaduscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.zip
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.gz
uscxml-6e1a4a67d5b17e92135cd3f5daf51bf044d76e40.tar.bz2
Got rid of more dynamic_casts
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;