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"
13 #include <xercesc/util/XMLString.hpp>
14 #include <xercesc/dom/DOMNode.hpp>
15 #include <xercesc/dom/DOMElement.hpp>
16 #include <xercesc/dom/DOMNodeList.hpp>
17 #include <xercesc/parsers/XercesDOMParser.hpp>
23 RegisterConfigurationInfoReader::RegisterConfigurationInfoReader() {
26 rootTag_ = xercesc::XMLString::transcode(
"ROOT") ;
27 headerTag_ = xercesc::XMLString::transcode(
"HEADER") ;
28 typeTag_ = xercesc::XMLString::transcode(
"TYPE") ;
29 extensionTableNameTag_ = xercesc::XMLString::transcode(
"EXTENSION_TABLE_NAME") ;
30 nameTag_ = xercesc::XMLString::transcode(
"NAME") ;
31 dataSetTag_ = xercesc::XMLString::transcode(
"DATA_SET") ;
32 versionTag_ = xercesc::XMLString::transcode(
"VERSION") ;
33 commentDescriptionTag_ = xercesc::XMLString::transcode(
"COMMENT_DESCRIPTION") ;
34 createdByUserTag_ = xercesc::XMLString::transcode(
"CREATED_BY_USER") ;
35 dataTag_ = xercesc::XMLString::transcode(
"DATA") ;
36 typeNameTag_ = xercesc::XMLString::transcode(
"TYPE_NAME") ;
37 registerNameTag_ = xercesc::XMLString::transcode(
"REGISTER_NAME") ;
38 baseAddressTag_ = xercesc::XMLString::transcode(
"BASE_ADDRESS") ;
39 sizeTag_ = xercesc::XMLString::transcode(
"REGISTER_SIZE") ;
40 accessTag_ = xercesc::XMLString::transcode(
"ACCESS") ;
43 RegisterConfigurationInfoReader::~RegisterConfigurationInfoReader() {
46 xercesc::XMLString::release( &rootTag_ );
47 xercesc::XMLString::release( &headerTag_ );
48 xercesc::XMLString::release( &typeTag_ );
49 xercesc::XMLString::release( &extensionTableNameTag_ );
50 xercesc::XMLString::release( &nameTag_ );
51 xercesc::XMLString::release( &dataSetTag_ );
52 xercesc::XMLString::release( &versionTag_ );
53 xercesc::XMLString::release( &commentDescriptionTag_ );
54 xercesc::XMLString::release( &createdByUserTag_ );
55 xercesc::XMLString::release( &typeNameTag_ );
56 xercesc::XMLString::release( ®isterNameTag_ );
57 xercesc::XMLString::release( &baseAddressTag_ );
58 xercesc::XMLString::release( &sizeTag_ );
59 xercesc::XMLString::release( &accessTag_ );
63 mf::LogError(__FILE__) <<
"Unknown exception encountered in TagNames destructor" <<
" ";
69 void RegisterConfigurationInfoReader::initPlatform(
void)
73 xercesc::XMLPlatformUtils::Initialize();
75 catch( xercesc::XMLException& e )
77 mf::LogError(__FILE__) <<
"XML toolkit initialization error: " << XML_TO_CHAR(e.getMessage()) <<
" ";
83 void RegisterConfigurationInfoReader::terminatePlatform(
void)
87 xercesc::XMLPlatformUtils::Terminate();
89 catch( xercesc::XMLException& e )
91 mf::LogError(__FILE__) <<
"XML toolkit teardown error: " << XML_TO_CHAR(e.getMessage()) <<
" ";
96 xercesc::DOMNode* RegisterConfigurationInfoReader::getNode(XMLCh* tagName, xercesc::DOMNode* parent,
unsigned int itemNumber)
98 return getNode(tagName, dynamic_cast< xercesc::DOMElement* >(parent), itemNumber);
102 xercesc::DOMNode* RegisterConfigurationInfoReader::getNode(XMLCh* tagName, xercesc::DOMElement* parent,
unsigned int itemNumber)
104 xercesc::DOMNodeList* nodeList = parent->getElementsByTagName(tagName);
107 throw(std::runtime_error( std::string(
"Can't find ") + XML_TO_CHAR(tagName) +
" tag!"));
108 std::cout << __COUT_HDR_FL__ << (std::string(
"Can't find ") + XML_TO_CHAR(tagName) +
" tag!") << std::endl;
113 return nodeList->item(itemNumber);
117 xercesc::DOMElement* RegisterConfigurationInfoReader::getElement(XMLCh* tagName, xercesc::DOMNode* parent,
unsigned int itemNumber)
119 return dynamic_cast< xercesc::DOMElement*
>(getNode(tagName,parent,itemNumber));
123 xercesc::DOMElement* RegisterConfigurationInfoReader::getElement(XMLCh* tagName, xercesc::DOMElement* parent,
unsigned int itemNumber)
125 return dynamic_cast< xercesc::DOMElement*
>(getNode(tagName,parent,itemNumber));
129 void RegisterConfigurationInfoReader::read(
RegisterBase& configuration)
222 void RegisterConfigurationInfoReader::read(
RegisterBase* configuration)
224 read(*configuration);