27 #ifndef SCXML4CPP_DOMSCXMLREADER_H
28 #define SCXML4CPP_DOMSCXMLREADER_H
31 #error This is a C++ include file and cannot be used from plain C
34 #ifndef SCXML4CPP_SCXMLREADER_H
35 #include "scxml4cpp/SCXMLReader.h"
41 #include <xercesc/dom/DOM.hpp>
42 #include <xercesc/dom/DOMDocument.hpp>
43 #include <xercesc/dom/DOMDocumentType.hpp>
44 #include <xercesc/dom/DOMElement.hpp>
45 #include <xercesc/dom/DOMImplementation.hpp>
46 #include <xercesc/dom/DOMImplementationLS.hpp>
47 #include <xercesc/dom/DOMNodeIterator.hpp>
48 #include <xercesc/dom/DOMNodeList.hpp>
49 #include <xercesc/dom/DOMText.hpp>
50 #include <xercesc/sax/HandlerBase.hpp>
51 #include <xercesc/parsers/XercesDOMParser.hpp>
52 #include <xercesc/util/XMLUni.hpp>
55 using namespace xercesc;
72 bool read(
const std::string& filename,
73 std::list<Action*>* actions,
74 std::list<Activity*>* activities,
76 bool read(
const std::string& input,
77 const std::string&
id,
78 std::list<Action*>* actions,
79 std::list<Activity*>* activities,
83 std::list<DOMElement*> mStates;
84 std::list<Action*>* mActions;
85 std::list<Activity*>* mActivities;
86 std::list<Action*> mTraces;
89 XercesDOMParser* mDomParser;
90 ErrorHandler* mErrHandler;
99 XMLCh* XML_TRANSITION;
104 XMLCh* XML_ATTR_INITIAL;
105 XMLCh* XML_ATTR_NAME;
113 XMLCh* XML_ATTR_EVENT;
114 XMLCh* XML_ATTR_COND;
115 XMLCh* XML_ATTR_TARGET;
116 XMLCh* XML_ATTR_TYPE;
125 XMLCh* XML_ATTR_ACTION_NAME;
126 XMLCh* XML_ATTR_ACTION_PARAM;
128 XMLCh* SCXML_HISTORY_DEEP;
129 XMLCh* SCXML_HISTORY_SHALLOW;
130 XMLCh* USER_DATA_KEY_STATE;
131 XMLCh* DEFAULT_SCXML_NAME;
134 void addTraces(
State* s);
137 void parseActivities();
138 void parseActions(
const XMLCh*);
140 Action* findAction(
const XMLCh*);
141 DOMNodeList* findCustomActionXMLElement(DOMElement* elementList);
142 Activity* findActivity(
const XMLCh*);
143 State* findTargetState(
const XMLCh*);
146 void resolveHistory();
147 bool isStateCompound(DOMElement*);
160 #endif // SCXML4CPP_DOMSCXMLREADER_H