ATLAS Offline Software
Loading...
Searching...
No Matches
XMLCoreParser.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef XMLCoreParser_hpp
6#define XMLCoreParser_hpp
7
8#include <string>
9#include <map>
10#include <memory>
11
12class XMLCoreParser;
13class XMLCoreParserImpl;
14
15namespace CoreParser{
16 class DOMNode;
17}
18
20public:
22 : m_node (node),
23 m_owns (false){
24 }
25
26 XMLCoreNode (std::unique_ptr<CoreParser::DOMNode> node)
27 : m_node (node.release()),
28 m_owns (true){
29 }
30
31 XMLCoreNode (const XMLCoreNode& other)
32 : m_node (other.m_node),
33 m_owns (false){
34 }
35
37 : m_node (other.m_node),
38 m_owns (other.m_owns){
39 other.m_node = nullptr;
40 other.m_owns = false;
41 }
42
43 XMLCoreNode& operator= (const XMLCoreNode& other);
44
46
48
49 operator const CoreParser::DOMNode& () const{
50 return (*m_node);
51 }
52
54 return (*m_node);
55 }
56
57private:
59 bool m_owns{};
60};
61
63public:
64
65 virtual ~XMLCoreFactory();
66
67 void start (XMLCoreParser& parser, const XMLCoreNode& node);
68 void end (XMLCoreParser& parser, const XMLCoreNode& node);
69 void comment (XMLCoreParser& parser, const std::string& comment);
70
71 virtual void do_start (XMLCoreParser& parser, const XMLCoreNode& node);
72 virtual void do_end (XMLCoreParser& parser, const XMLCoreNode& node);
73 virtual void do_comment (XMLCoreParser& parser, const std::string& comment);
74
75 std::string get_name (const XMLCoreNode& node);
76 int sibling_number (const XMLCoreNode& node);
77
78 static int attribute_number (const XMLCoreNode& node);
79
80 static bool has_attribute (const XMLCoreNode& node, const std::string& name);
81 static int get_int (const XMLCoreNode& node, const std::string& name);
82 static double get_double (const XMLCoreNode& node, const std::string& name);
83 static bool get_boolean (const XMLCoreNode& node, const std::string& name);
84 static std::string get_ID (const XMLCoreNode& node, const std::string& name);
85 static std::string get_value (const XMLCoreNode& node, const std::string& name);
86 static std::string get_name (const XMLCoreNode& node, int index);
87 static std::string get_token (const XMLCoreNode& node, const std::string& name);
88
89 static bool check_int (const int n, const XMLCoreNode& node, const std::string& name);
90 static bool check_double (const int n, const XMLCoreNode& node, const std::string& name);
91
92protected:
93
94 std::string m_xmlelementname;
95};
96
98public:
99
100 XMLCoreNode parse (const std::string& file_name);
101 void visit (const std::string& file_name);
102
103 void register_default_factory (std::unique_ptr<XMLCoreFactory> factory);
104 void register_factory (const std::string& name,
105 std::unique_ptr<XMLCoreFactory> factory);
106 void register_external_entity (const std::string& name, const std::string& file_name);
107 void register_text_entity (const std::string& name, const std::string& text);
108
109 void up();
110 void down();
111 int level() const;
112
113
114private:
115
116 void visit (const XMLCoreNode& node);
117 void terminate ();
118 XMLCoreFactory* find_factory (const std::string& name);
119
120 typedef std::map <std::string, std::unique_ptr<XMLCoreFactory> > FactoryMap;
122 std::unique_ptr<XMLCoreFactory> m_default_factory;
123 int m_level = 0;
124};
125
126#endif
virtual void do_comment(XMLCoreParser &parser, const std::string &comment)
virtual void do_start(XMLCoreParser &parser, const XMLCoreNode &node)
static std::string get_value(const XMLCoreNode &node, const std::string &name)
void end(XMLCoreParser &parser, const XMLCoreNode &node)
std::string get_name(const XMLCoreNode &node)
static bool has_attribute(const XMLCoreNode &node, const std::string &name)
virtual ~XMLCoreFactory()
virtual void do_end(XMLCoreParser &parser, const XMLCoreNode &node)
static int attribute_number(const XMLCoreNode &node)
static double get_double(const XMLCoreNode &node, const std::string &name)
int sibling_number(const XMLCoreNode &node)
static bool check_int(const int n, const XMLCoreNode &node, const std::string &name)
void comment(XMLCoreParser &parser, const std::string &comment)
static bool check_double(const int n, const XMLCoreNode &node, const std::string &name)
static int get_int(const XMLCoreNode &node, const std::string &name)
static std::string get_ID(const XMLCoreNode &node, const std::string &name)
void start(XMLCoreParser &parser, const XMLCoreNode &node)
static bool get_boolean(const XMLCoreNode &node, const std::string &name)
static std::string get_token(const XMLCoreNode &node, const std::string &name)
std::string m_xmlelementname
const CoreParser::DOMNode & get_node() const
const CoreParser::DOMNode * m_node
XMLCoreNode & operator=(const XMLCoreNode &other)
XMLCoreNode(const CoreParser::DOMNode *node)
XMLCoreNode(std::unique_ptr< CoreParser::DOMNode > node)
XMLCoreNode(const XMLCoreNode &other)
XMLCoreNode(XMLCoreNode &&other)
std::unique_ptr< XMLCoreFactory > m_default_factory
std::map< std::string, std::unique_ptr< XMLCoreFactory > > FactoryMap
int level() const
XMLCoreNode parse(const std::string &file_name)
FactoryMap m_factories
void terminate()
void visit(const std::string &file_name)
void register_factory(const std::string &name, std::unique_ptr< XMLCoreFactory > factory)
void register_text_entity(const std::string &name, const std::string &text)
void register_external_entity(const std::string &name, const std::string &file_name)
XMLCoreFactory * find_factory(const std::string &name)
void register_default_factory(std::unique_ptr< XMLCoreFactory > factory)
Definition node.h:24
static std::string release
Definition computils.h:50
Definition index.py:1