summaryrefslogtreecommitdiffstats
path: root/src/uscxml/transform/ChartToFSM.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/transform/ChartToFSM.h')
-rw-r--r--src/uscxml/transform/ChartToFSM.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/uscxml/transform/ChartToFSM.h b/src/uscxml/transform/ChartToFSM.h
index 9e583b1..6698889 100644
--- a/src/uscxml/transform/ChartToFSM.h
+++ b/src/uscxml/transform/ChartToFSM.h
@@ -109,6 +109,13 @@ public:
bool isSubset; // there is a superset to this set
bool hasExecutableContent;
+ uint32_t eventsRaised; // internal events this transition will raise
+ uint32_t eventsSent; // external events this transition will send
+ uint32_t eventsChainRaised; // maximum number of internal events raised when taking this transition in a chain
+ uint32_t eventsChainSent; // maximum number of external events raised when taking this transition in a chain
+
+ std::set<int> startTransitionRefs; // indices of eventful transitions that might trigger this transition
+
std::set<int> transitionRefs; // indizes of constituting transitions
Arabica::XPath::NodeSet<std::string> getTransitions() const;
@@ -170,9 +177,16 @@ protected:
void explode();
void getPotentialTransitionsForConf(const Arabica::XPath::NodeSet<std::string>& conf, std::map<std::string, GlobalTransition*>& outMap);
- void labelTransitions();
+// void labelTransitions();
void indexTransitions(const Arabica::DOM::Element<std::string>& root);
+ void annotateRaiseAndSend(const Arabica::DOM::Element<std::string>& root);
+ bool hasForeachInBetween(const Arabica::DOM::Node<std::string>& ancestor, const Arabica::DOM::Node<std::string>& child);
+ void updateRaisedAndSendChains(GlobalState* state, GlobalTransition* source, std::set<GlobalTransition*> visited);
+
+ uint32_t getMinInternalQueueLength(uint32_t defaultVal);
+ uint32_t getMinExternalQueueLength(uint32_t defaultVal);
+
std::list<GlobalTransition*> sortTransitions(std::list<GlobalTransition*> list);
// we need this static as we use it in a sort function
@@ -193,6 +207,10 @@ protected:
size_t _lastStateIndex;
size_t _lastTransIndex;
+ size_t _maxEventSentChain;
+ size_t _maxEventRaisedChain;
+ size_t _doneEventRaiseTolerance;
+
GlobalState* _start;
GlobalTransition* _currGlobalTransition;
Arabica::DOM::Document<std::string> _flatDoc;