ATLAS Offline Software
Loading...
Searching...
No Matches
ExpatCoreParser.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_EXPATCOREPARSER_H
6#define XMLCOREPARSER_EXPATCOREPARSER_H
7
8#include <expat.h>
9#include <map>
10#include <mutex>
11#include <memory>
12#include "DOMNode.h"
14
16{
17public:
18
19 typedef std::map <std::string, std::string> ExternalEntityMap;
20
21 static std::unique_ptr<CoreParser::DOMNode> parse (const std::string& file_name);
22
23 static void register_external_entity (const std::string& name, const std::string& file_name);
24 static void register_text_entity (const std::string& name, const std::string& text);
25
26private:
27
28 ExpatCoreParser (const std::string& prefix);
29 void do_start (const char* el, const char** attr);
30 void do_end (const char* el);
31 void do_char_data (const XML_Char* s, int len);
32 void do_default_handler (const XML_Char* s, int len);
33 void do_comment (const XML_Char* s);
34 int generic_parse (XML_Parser p, const std::string& file_name);
35 int generic_text_parse (XML_Parser p, const std::string& text);
36 int do_external_entity (XML_Parser parser,
37 const XML_Char* context,
38 const XML_Char* systemId);
39
40 static void start (void* /*user_data*/, const char* el, const char** attr);
41 static void end (void* /*user_data*/, const char* el);
42 static void char_data (void* /*user_data*/, const XML_Char* s, int len);
43 static void default_handler (void* /*user_data*/, const XML_Char* s, int len);
44 static void comment (void* /*userData*/, const XML_Char* s);
45 static int external_entity (XML_Parser parser,
46 const XML_Char* context,
47 const XML_Char* /*base*/,
48 const XML_Char* systemId,
49 const XML_Char* /*publicId*/);
50 static void entity (void* userData,
51 const XML_Char* entityName,
52 int is_parameter_entity,
53 const XML_Char* value,
54 int value_length,
55 const XML_Char* base,
56 const XML_Char* systemId,
57 const XML_Char* publicId,
58 const XML_Char* /*notationName*/);
59 std::unique_ptr<CoreParser::DOMNode> get_document ();
60
61 static const std::string& find_external_entity (const std::string& name);
62 static const std::string& find_text_entity (const std::string& name);
63
64 void clean ();
65
66 std::unique_ptr<CoreParser::DOMNode> m_top;
68 std::string m_prefix;
69
70 static std::mutex s_mutex;
71 typedef std::lock_guard<std::mutex> lock_t;
73 static ExternalEntityMap s_text_entities ATLAS_THREAD_SAFE;
74};
75
76#endif
77
Define macros for attributes used to control the static checker.
int generic_text_parse(XML_Parser p, const std::string &text)
std::unique_ptr< CoreParser::DOMNode > get_document()
void do_start(const char *el, const char **attr)
std::unique_ptr< CoreParser::DOMNode > m_top
static void register_text_entity(const std::string &name, const std::string &text)
void do_default_handler(const XML_Char *s, int len)
static void entity(void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *)
std::string m_prefix
static void char_data(void *, const XML_Char *s, int len)
static int external_entity(XML_Parser parser, const XML_Char *context, const XML_Char *, const XML_Char *systemId, const XML_Char *)
std::lock_guard< std::mutex > lock_t
int generic_parse(XML_Parser p, const std::string &file_name)
static void start(void *, const char *el, const char **attr)
void do_end(const char *el)
static void default_handler(void *, const XML_Char *s, int len)
CoreParser::DOMNode * m_last
void do_comment(const XML_Char *s)
static std::unique_ptr< CoreParser::DOMNode > parse(const std::string &file_name)
void do_char_data(const XML_Char *s, int len)
static const std::string & find_external_entity(const std::string &name)
static void register_external_entity(const std::string &name, const std::string &file_name)
static const std::string & find_text_entity(const std::string &name)
static void comment(void *, const XML_Char *s)
std::map< std::string, std::string > ExternalEntityMap
int do_external_entity(XML_Parser parser, const XML_Char *context, const XML_Char *systemId)
static ExternalEntityMap s_entities ATLAS_THREAD_SAFE
static void end(void *, const char *el)
ExpatCoreParser(const std::string &prefix)
static std::mutex s_mutex
std::string base
Definition hcg.cxx:81