diff options
Diffstat (limited to 'src/uscxml/util')
-rw-r--r-- | src/uscxml/util/Convenience.h | 22 | ||||
-rw-r--r-- | src/uscxml/util/Predicates.h | 92 | ||||
-rw-r--r-- | src/uscxml/util/String.h | 16 |
3 files changed, 86 insertions, 44 deletions
diff --git a/src/uscxml/util/Convenience.h b/src/uscxml/util/Convenience.h index c12e0e4..98c4220 100644 --- a/src/uscxml/util/Convenience.h +++ b/src/uscxml/util/Convenience.h @@ -29,14 +29,14 @@ namespace uscxml { inline bool isnan(double x); // see http://stackoverflow.com/questions/228005/alternative-to-itoa-for-converting-integer-to-string-c -template <typename T> std::string toStr(T tmp) { +template <typename T> std::string USCXML_API toStr(T tmp) { std::ostringstream outSS; outSS.precision(std::numeric_limits<double>::digits10 + 1); outSS << tmp; return outSS.str(); } -template <typename T> T strTo(std::string tmp) { +template <typename T> T USCXML_API strTo(std::string tmp) { T output; std::istringstream in(tmp); in >> output; @@ -50,16 +50,16 @@ public: std::string unit; }; -bool isNumeric(const char* pszInput, int nNumberBase); -bool isInteger( const char* pszInput, int nNumberBase); -bool iequals(const std::string& a, const std::string& b); -bool equals(const std::string& a, const std::string& b); -bool stringIsTrue(const std::string& value); -bool envVarIsTrue(const char* name); -bool envVarIEquals(const char* name, const char* value); +bool USCXML_API isNumeric(const char* pszInput, int nNumberBase); +bool USCXML_API isInteger( const char* pszInput, int nNumberBase); +bool USCXML_API iequals(const std::string& a, const std::string& b); +bool USCXML_API equals(const std::string& a, const std::string& b); +bool USCXML_API stringIsTrue(const std::string& value); +bool USCXML_API envVarIsTrue(const char* name); +bool USCXML_API envVarIEquals(const char* name, const char* value); -std::string escape(const std::string& a); -std::string unescape(const std::string& a); +std::string USCXML_API escape(const std::string& a); +std::string USCXML_API unescape(const std::string& a); } #endif /* end of include guard: CONVENIENCE_H_LU7GZ6CB */ diff --git a/src/uscxml/util/Predicates.h b/src/uscxml/util/Predicates.h index 6204d6a..22ad581 100644 --- a/src/uscxml/util/Predicates.h +++ b/src/uscxml/util/Predicates.h @@ -20,41 +20,81 @@ #ifndef PREDICATES_H_D3A20484 #define PREDICATES_H_D3A20484 +#include "uscxml/Common.h" + #include <string> #include <list> #include <xercesc/dom/DOM.hpp> #include "uscxml/util/DOM.h" #include "uscxml/util/Convenience.h" +// forward declare +namespace XERCESC_NS { +class DOMElement; +class DOMNode; +} + + namespace uscxml { -std::list<XERCESC_NS::DOMElement*> getChildStates(const XERCESC_NS::DOMElement* state, bool properOnly = true); -std::list<XERCESC_NS::DOMElement*> getChildStates(const std::list<XERCESC_NS::DOMElement*>& states, bool properOnly = true); -XERCESC_NS::DOMElement* getParentState(const XERCESC_NS::DOMElement* element); -XERCESC_NS::DOMElement* getSourceState(const XERCESC_NS::DOMElement* transition); -XERCESC_NS::DOMElement* findLCCA(const std::list<XERCESC_NS::DOMElement*>& states); -std::list<XERCESC_NS::DOMElement*> getProperAncestors(const XERCESC_NS::DOMElement* s1, const XERCESC_NS::DOMElement* s2); - -std::list<XERCESC_NS::DOMElement*> getTargetStates(const XERCESC_NS::DOMElement* transition, const XERCESC_NS::DOMElement* root); -std::list<XERCESC_NS::DOMElement*> getEffectiveTargetStates(const XERCESC_NS::DOMElement* transition); -XERCESC_NS::DOMElement* getTransitionDomain(const XERCESC_NS::DOMElement* transition, const XERCESC_NS::DOMElement* root); - -bool areFromSameMachine(const XERCESC_NS::DOMNode* n1, const XERCESC_NS::DOMNode* n2); - -std::list<XERCESC_NS::DOMElement*> getStates(const std::list<std::string>& stateIds, const XERCESC_NS::DOMElement* root); -XERCESC_NS::DOMElement* getState(const std::string& stateId, const XERCESC_NS::DOMElement* root); -std::list<XERCESC_NS::DOMElement*> getInitialStates(const XERCESC_NS::DOMElement* state, const XERCESC_NS::DOMElement* root); -std::list<XERCESC_NS::DOMElement*> getReachableStates(const XERCESC_NS::DOMElement* root); -std::list<XERCESC_NS::DOMElement*> getExitSet(const XERCESC_NS::DOMElement* transition, const XERCESC_NS::DOMElement* root); -bool conflicts(const XERCESC_NS::DOMElement* transition1, const XERCESC_NS::DOMElement* transition2, const XERCESC_NS::DOMElement* root); - -bool isState(const XERCESC_NS::DOMElement* state, bool properOnly = true); -bool isCompound(const XERCESC_NS::DOMElement* state); -bool isAtomic(const XERCESC_NS::DOMElement* state); -bool isParallel(const XERCESC_NS::DOMElement* state); -bool isFinal(const XERCESC_NS::DOMElement* state); -bool isHistory(const XERCESC_NS::DOMElement* state); +// see braindead declspec syntax here: https://msdn.microsoft.com/en-us/library/aa273692(v=vs.60).aspx + +std::list<XERCESC_NS::DOMElement*> USCXML_API getChildStates( + const XERCESC_NS::DOMElement* state, + bool properOnly = true); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getChildStates( + const std::list<XERCESC_NS::DOMElement*>& states, + bool properOnly = true); + +XERCESC_NS::DOMElement USCXML_API *getParentState(const XERCESC_NS::DOMElement* element); +XERCESC_NS::DOMElement USCXML_API *getSourceState(const XERCESC_NS::DOMElement* transition); +XERCESC_NS::DOMElement USCXML_API *findLCCA(const std::list<XERCESC_NS::DOMElement*>& states); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getProperAncestors( + const XERCESC_NS::DOMElement* s1, + const XERCESC_NS::DOMElement* s2); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getTargetStates( + const XERCESC_NS::DOMElement* transition, + const XERCESC_NS::DOMElement* root); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getEffectiveTargetStates(const XERCESC_NS::DOMElement* transition); + +XERCESC_NS::DOMElement USCXML_API *getTransitionDomain( + const XERCESC_NS::DOMElement* transition, + const XERCESC_NS::DOMElement* root); + +bool USCXML_API areFromSameMachine(const XERCESC_NS::DOMNode* n1, + const XERCESC_NS::DOMNode* n2); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getStates( + const std::list<std::string>& stateIds, + const XERCESC_NS::DOMElement* root); + +XERCESC_NS::DOMElement USCXML_API *getState( + const std::string& stateId, + const XERCESC_NS::DOMElement* root); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getInitialStates( + const XERCESC_NS::DOMElement* state, + const XERCESC_NS::DOMElement* root); + +std::list<XERCESC_NS::DOMElement*> USCXML_API getReachableStates(const XERCESC_NS::DOMElement* root); +std::list<XERCESC_NS::DOMElement*> USCXML_API getExitSet( + const XERCESC_NS::DOMElement* transition, + const XERCESC_NS::DOMElement* root); + +bool USCXML_API conflicts(const XERCESC_NS::DOMElement* transition1, + const XERCESC_NS::DOMElement* transition2, + const XERCESC_NS::DOMElement* root); +bool USCXML_API isState(const XERCESC_NS::DOMElement* state, bool properOnly = true); +bool USCXML_API isCompound(const XERCESC_NS::DOMElement* state); +bool USCXML_API isAtomic(const XERCESC_NS::DOMElement* state); +bool USCXML_API isParallel(const XERCESC_NS::DOMElement* state); +bool USCXML_API isFinal(const XERCESC_NS::DOMElement* state); +bool USCXML_API isHistory(const XERCESC_NS::DOMElement* state); } diff --git a/src/uscxml/util/String.h b/src/uscxml/util/String.h index 974db3b..464fbbd 100644 --- a/src/uscxml/util/String.h +++ b/src/uscxml/util/String.h @@ -20,20 +20,22 @@ #ifndef STRING_H_FD462039 #define STRING_H_FD462039 +#include "uscxml/Common.h" + #include <string> #include <list> namespace uscxml { -std::string escapeMacro(std::string const &s); - -std::string toBinStr(size_t val, size_t margin); - -std::list<std::string> tokenize(const std::string &line, const char seperator = ' ', bool trimWhiteSpace = true); +std::string USCXML_API escapeMacro(std::string const &s); +std::string USCXML_API toBinStr(size_t val, size_t margin); -std::string spaceNormalize(const std::string &text); +std::list<std::string> USCXML_API tokenize(const std::string &line, + const char seperator = ' ', + bool trimWhiteSpace = true); -bool nameMatch(const std::string &eventDescs, const std::string &event); +std::string USCXML_API spaceNormalize(const std::string &text); +bool USCXML_API nameMatch(const std::string &eventDescs, const std::string &event); } |