summaryrefslogtreecommitdiffstats
path: root/src/uscxml/interpreter/FastMicroStep.h
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-06-13 08:52:55 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-06-13 08:52:55 (GMT)
commit053e9bc973fbe88fc41a34064ffadc0deabac58d (patch)
tree6aeee286577159ffcb612d41972a9d18ab685c6d /src/uscxml/interpreter/FastMicroStep.h
parent6e13c7b6e0888323223afd5d2e36e86243df57af (diff)
downloaduscxml-053e9bc973fbe88fc41a34064ffadc0deabac58d.zip
uscxml-053e9bc973fbe88fc41a34064ffadc0deabac58d.tar.gz
uscxml-053e9bc973fbe88fc41a34064ffadc0deabac58d.tar.bz2
Fixed dozens of memory leaks
Diffstat (limited to 'src/uscxml/interpreter/FastMicroStep.h')
-rw-r--r--src/uscxml/interpreter/FastMicroStep.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/uscxml/interpreter/FastMicroStep.h b/src/uscxml/interpreter/FastMicroStep.h
index 023bb8f..b2477ee 100644
--- a/src/uscxml/interpreter/FastMicroStep.h
+++ b/src/uscxml/interpreter/FastMicroStep.h
@@ -26,6 +26,7 @@
#include "uscxml/util/DOM.h" // X
#include <vector>
+#include <map>
#include <set>
#include "MicroStepImpl.h"
@@ -89,6 +90,11 @@ protected:
unsigned char type;
};
+ class CachedPredicates {
+ public:
+ std::map<const XERCESC_NS::DOMElement*, std::list<XERCESC_NS::DOMElement*> > exitSet;
+ };
+
virtual void init(XERCESC_NS::DOMElement* scxml);
std::list<XERCESC_NS::DOMElement*> getCompletion(const XERCESC_NS::DOMElement* state);
@@ -120,7 +126,12 @@ private:
std::list<XERCESC_NS::DOMElement*> getHistoryCompletion(const XERCESC_NS::DOMElement* state);
void resortStates(XERCESC_NS::DOMNode* node, const X& xmlPrefix);
-// bool hasLegalConfiguration();
+ bool conflictsCached(const XERCESC_NS::DOMElement* t1, const XERCESC_NS::DOMElement* t2, const XERCESC_NS::DOMElement* root); ///< overrides implementation Predicates::conflicts for speed
+
+ std::list<XERCESC_NS::DOMElement*> getExitSetCached(const XERCESC_NS::DOMElement* transition,
+ const XERCESC_NS::DOMElement* root);
+
+ CachedPredicates _cache;
#ifdef USCXML_VERBOSE
void printStateNames(const boost::dynamic_bitset<>& bitset);