31 #define DECLARE_XMLPERSIST_IMPL(_T) friend class MiscCommon::IXMLPersistImpl<_T>; 40 void Read(xercesc::DOMNode* _element)
42 _T* pThis = reinterpret_cast<_T*>(
this);
43 pThis->ReadXmlCfg(_element);
45 void Write(xercesc::DOMNode* _element)
47 _T* pThis = reinterpret_cast<_T*>(
this);
48 pThis->WriteXmlCfg(_element);
58 #define BEGIN_READ_XML_NODE(_T, _ELEMENT_NAME) \ 59 void ReadXmlCfg(xercesc::DOMNode* _element) \ 61 const std::string str("An internal error has been detected. Can't read configuration of " + std::string(#_T) + \ 64 throw std::invalid_argument(str + "DOMNode is NULL."); \ 65 MiscCommon::XMLHelper::smart_XMLCh ElementName(_ELEMENT_NAME); \ 66 xercesc::DOMElement* config_element(dynamic_cast<xercesc::DOMElement*>(_element)); \ 67 if (!config_element) \ 68 throw std::runtime_error(str + "element " + std::string(#_ELEMENT_NAME) + " is missing"); \ 69 xercesc::DOMNodeList* list(config_element->getElementsByTagName(ElementName)); \ 71 throw std::runtime_error(str + "element " + std::string(#_ELEMENT_NAME) + " is missing"); \ 72 xercesc::DOMNode* node(list->item(0)); \ 74 throw std::runtime_error(str + "element " + std::string(#_ELEMENT_NAME) + " is missing"); \ 75 xercesc::DOMElement* elementConfig(NULL); \ 76 if (xercesc::DOMNode::ELEMENT_NODE == node->getNodeType()) \ 77 elementConfig = dynamic_cast<xercesc::DOMElement*>(node); \ 79 throw std::runtime_error(str + "empty XML document"); 87 #define READ_NODE_ATTR(ELEMENT_NAME, VAR) MiscCommon::XMLHelper::get_attr_value(elementConfig, ELEMENT_NAME, &VAR); 93 #define READ_NODE_VALUE(NODE_NAME, VAR) MiscCommon::XMLHelper::get_node_value(elementConfig, NODE_NAME, &VAR); 100 #define END_READ_XML_NODE } 127 #define BEGIN_READ_XML_CFG(_T) BEGIN_READ_XML_NODE(_T, "config") 135 #define END_READ_XML_CFG } 141 #define BEGIN_WRITE_XML_CFG(_T) \ 142 void WriteXmlCfg(xercesc::DOMNode* ) \ 149 #define END_WRITE_XML_CFG } void Write(xercesc::DOMNode *_element)
Definition: IXMLPersist.h:45
#define _T(s)
Use TCHAR instead of char or wchar_t. It will be appropriately translated.
Definition: def.h:85
The IXMLPersistImpl interface is a class of the XML persistance.
Definition: IXMLPersist.h:38
void Read(xercesc::DOMNode *_element)
Definition: IXMLPersist.h:40
Miscellaneous functions and helpers are located here.
Definition: BOOST_FILESYSTEM.h:21