32 #ifndef SCXML4CPP_DOMSCXMLREADER_H
33 #define SCXML4CPP_DOMSCXMLREADER_H
36 #error This is a C++ include file and cannot be used from plain C
39 #ifndef SCXML4CPP_SCXMLREADER_H
46 #include <xercesc/dom/DOM.hpp>
47 #include <xercesc/dom/DOMDocument.hpp>
48 #include <xercesc/dom/DOMDocumentType.hpp>
49 #include <xercesc/dom/DOMElement.hpp>
50 #include <xercesc/dom/DOMImplementation.hpp>
51 #include <xercesc/dom/DOMImplementationLS.hpp>
52 #include <xercesc/dom/DOMNodeIterator.hpp>
53 #include <xercesc/dom/DOMNodeList.hpp>
54 #include <xercesc/dom/DOMText.hpp>
55 #include <xercesc/sax/HandlerBase.hpp>
56 #include <xercesc/parsers/XercesDOMParser.hpp>
57 #include <xercesc/util/XMLUni.hpp>
60 using namespace xercesc;
104 bool read(
const std::string& filename,
105 std::list<Action*>* actions,
106 std::list<Activity*>* activities,
120 bool read(
const std::string& input,
121 const std::string&
id,
122 std::list<Action*>* actions,
123 std::list<Activity*>* activities,
127 std::list<DOMElement*> mStates;
128 std::list<Action*>* mActions;
129 std::list<Activity*>* mActivities;
130 std::list<Action*> mTraces;
133 XercesDOMParser* mDomParser;
134 ErrorHandler* mErrHandler;
143 XMLCh* XML_TRANSITION;
148 XMLCh* XML_ATTR_INITIAL;
149 XMLCh* XML_ATTR_NAME;
157 XMLCh* XML_ATTR_EVENT;
158 XMLCh* XML_ATTR_COND;
159 XMLCh* XML_ATTR_TARGET;
160 XMLCh* XML_ATTR_TYPE;
169 XMLCh* XML_ATTR_ACTION_NAME;
170 XMLCh* XML_ATTR_ACTION_PARAM;
172 XMLCh* SCXML_HISTORY_DEEP;
173 XMLCh* SCXML_HISTORY_SHALLOW;
174 XMLCh* USER_DATA_KEY_STATE;
175 XMLCh* DEFAULT_SCXML_NAME;
178 void addTraces(
State* s);
181 void parseActivities();
182 void parseActions(
const XMLCh*);
184 Action* findAction(
const XMLCh*);
185 DOMNodeList* findCustomActionXMLElement(DOMElement* elementList);
186 Activity* findActivity(
const XMLCh*);
187 State* findTargetState(
const XMLCh*);
190 void resolveHistory();
191 bool isStateCompound(DOMElement*);
204 #endif // SCXML4CPP_DOMSCXMLREADER_H