]> SALOME platform Git repositories - modules/shaper.git/blob - src/Config/Config_XMLReader.h
Salome HOME
a44d49364a9cb8d4c95b60ea1d62ca8f06fe9146
[modules/shaper.git] / src / Config / Config_XMLReader.h
1 /*
2  * Config_XMLReader.h
3  *
4  *  Created on: Mar 14, 2014
5  *      Author: sbh
6  */
7
8 #ifndef CONFIG_XMLREADER_H_
9 #define CONFIG_XMLREADER_H_
10
11 #include <Config.h>
12
13 #include <cstdarg>
14 #include <string>
15
16 //>> Forward declaration of xmlNodePtr.
17 typedef struct _xmlNode xmlNode;
18 typedef xmlNode *xmlNodePtr;
19 struct _xmlNode;
20 //<<
21
22 //>> Forward declaration of xmlDocPtr.
23 typedef struct _xmlDoc xmlDoc;
24 typedef xmlDoc *xmlDocPtr;
25 struct _xmlDoc;
26 //<<
27
28 /*
29  * Base class for all libxml readers. Provides high-level API
30  * for all xml operations.
31  *
32  */
33 class Config_XMLReader
34 {
35 public:
36   CONFIG_EXPORT Config_XMLReader(const std::string& theXmlFile);
37   CONFIG_EXPORT virtual ~Config_XMLReader();
38
39   CONFIG_EXPORT void readAll();
40
41 protected:
42   virtual void processNode(xmlNodePtr aNode);
43   virtual bool processChildren(xmlNodePtr aNode);
44
45   xmlNodePtr findRoot();
46   void readRecursively(xmlNodePtr theParent);
47
48   xmlNodePtr node(void* theNode);
49   std::string getProperty(xmlNodePtr theNode, const char* property);
50
51 protected:
52   std::string myDocumentPath;
53   xmlDocPtr   myXmlDoc;
54 };
55
56 #endif /* CONFIG_XMLREADER_H_ */