Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[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 public:
42   CONFIG_EXPORT xmlNodePtr findRoot();
43
44 protected:
45   virtual void processNode(xmlNodePtr aNode);
46   virtual bool processChildren(xmlNodePtr aNode);
47
48   void readRecursively(xmlNodePtr theParent);
49
50   xmlNodePtr node(void* theNode);
51   std::string getProperty(xmlNodePtr theNode, const char* property);
52
53 protected:
54   std::string myDocumentPath;
55   xmlDocPtr   myXmlDoc;
56 };
57
58 #endif /* CONFIG_XMLREADER_H_ */