8 #include "otsdaq-core/ConfigurationDataFormats/RegisterConfigurationInfoReader.h"
9 #include "otsdaq-core/ConfigurationDataFormats/RegisterBase.h"
10 #include "otsdaq-core/XmlUtilities/ConvertFromXML.h"
11 #include "otsdaq-core/XmlUtilities/DOMTreeErrorReporter.h"
15 #include <xercesc/dom/DOMElement.hpp>
16 #include <xercesc/dom/DOMNode.hpp>
17 #include <xercesc/dom/DOMNodeList.hpp>
18 #include <xercesc/parsers/XercesDOMParser.hpp>
19 #include <xercesc/util/XMLString.hpp>
23 RegisterConfigurationInfoReader::RegisterConfigurationInfoReader()
27 rootTag_ = xercesc::XMLString::transcode(
"ROOT");
28 headerTag_ = xercesc::XMLString::transcode(
"HEADER");
29 typeTag_ = xercesc::XMLString::transcode(
"TYPE");
30 extensionTableNameTag_ = xercesc::XMLString::transcode(
"EXTENSION_TABLE_NAME");
31 nameTag_ = xercesc::XMLString::transcode(
"NAME");
32 dataSetTag_ = xercesc::XMLString::transcode(
"DATA_SET");
33 versionTag_ = xercesc::XMLString::transcode(
"VERSION");
34 commentDescriptionTag_ = xercesc::XMLString::transcode(
"COMMENT_DESCRIPTION");
35 createdByUserTag_ = xercesc::XMLString::transcode(
"CREATED_BY_USER");
36 dataTag_ = xercesc::XMLString::transcode(
"DATA");
37 typeNameTag_ = xercesc::XMLString::transcode(
"TYPE_NAME");
38 registerNameTag_ = xercesc::XMLString::transcode(
"REGISTER_NAME");
39 baseAddressTag_ = xercesc::XMLString::transcode(
"BASE_ADDRESS");
40 sizeTag_ = xercesc::XMLString::transcode(
"REGISTER_SIZE");
41 accessTag_ = xercesc::XMLString::transcode(
"ACCESS");
44 RegisterConfigurationInfoReader::~RegisterConfigurationInfoReader()
48 xercesc::XMLString::release(&rootTag_);
49 xercesc::XMLString::release(&headerTag_);
50 xercesc::XMLString::release(&typeTag_);
51 xercesc::XMLString::release(&extensionTableNameTag_);
52 xercesc::XMLString::release(&nameTag_);
53 xercesc::XMLString::release(&dataSetTag_);
54 xercesc::XMLString::release(&versionTag_);
55 xercesc::XMLString::release(&commentDescriptionTag_);
56 xercesc::XMLString::release(&createdByUserTag_);
57 xercesc::XMLString::release(&typeNameTag_);
58 xercesc::XMLString::release(®isterNameTag_);
59 xercesc::XMLString::release(&baseAddressTag_);
60 xercesc::XMLString::release(&sizeTag_);
61 xercesc::XMLString::release(&accessTag_);
65 __MOUT_ERROR__ <<
"Unknown exception encountered in TagNames destructor"
72 void RegisterConfigurationInfoReader::initPlatform(
void)
76 xercesc::XMLPlatformUtils::Initialize();
78 catch(xercesc::XMLException& e)
80 __MOUT_ERROR__ <<
"XML toolkit initialization error: "
81 << XML_TO_CHAR(e.getMessage()) <<
" ";
87 void RegisterConfigurationInfoReader::terminatePlatform(
void)
91 xercesc::XMLPlatformUtils::Terminate();
93 catch(xercesc::XMLException& e)
95 __MOUT_ERROR__ <<
"XML toolkit teardown error: " << XML_TO_CHAR(e.getMessage())
101 xercesc::DOMNode* RegisterConfigurationInfoReader::getNode(XMLCh* tagName,
102 xercesc::DOMNode* parent,
103 unsigned int itemNumber)
105 return getNode(tagName, dynamic_cast<xercesc::DOMElement*>(parent), itemNumber);
109 xercesc::DOMNode* RegisterConfigurationInfoReader::getNode(XMLCh* tagName,
110 xercesc::DOMElement* parent,
111 unsigned int itemNumber)
113 xercesc::DOMNodeList* nodeList = parent->getElementsByTagName(tagName);
116 throw(std::runtime_error(std::string(
"Can't find ") + XML_TO_CHAR(tagName) +
118 std::cout << __COUT_HDR_FL__
119 << (std::string(
"Can't find ") + XML_TO_CHAR(tagName) +
" tag!")
128 return nodeList->item(itemNumber);
132 xercesc::DOMElement* RegisterConfigurationInfoReader::getElement(XMLCh* tagName,
133 xercesc::DOMNode* parent,
134 unsigned int itemNumber)
136 return dynamic_cast<xercesc::DOMElement*
>(getNode(tagName, parent, itemNumber));
140 xercesc::DOMElement* RegisterConfigurationInfoReader::getElement(
141 XMLCh* tagName, xercesc::DOMElement* parent,
unsigned int itemNumber)
143 return dynamic_cast<xercesc::DOMElement*
>(getNode(tagName, parent, itemNumber));
147 void RegisterConfigurationInfoReader::read(
RegisterBase& configuration)
250 void RegisterConfigurationInfoReader::read(
RegisterBase* configuration)
252 read(*configuration);