summaryrefslogtreecommitdiffstats
path: root/src/uscxml/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/util')
-rw-r--r--src/uscxml/util/Convenience.h22
-rw-r--r--src/uscxml/util/Predicates.h92
-rw-r--r--src/uscxml/util/String.h16
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);
}