Orcus
Loading...
Searching...
No Matches
include
orcus
dom_tree.hpp
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
* This Source Code Form is subject to the terms of the Mozilla Public
4
* License, v. 2.0. If a copy of the MPL was not distributed with this
5
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
*/
7
8
#ifndef INCLUDED_ORCUS_DOM_TREE_HPP
9
#define INCLUDED_ORCUS_DOM_TREE_HPP
10
11
#include "types.hpp"
12
13
#include <vector>
14
#include <ostream>
15
#include <memory>
16
17
namespace
orcus {
18
19
class
xmlns_context;
20
21
namespace
sax {
22
23
struct
doctype_declaration;
24
25
}
26
27
namespace
dom {
28
29
class
document_tree;
30
31
enum class
node_t : uint8_t
32
{
33
unset,
34
declaration,
35
element,
36
};
37
38
struct
ORCUS_DLLPUBLIC
entity_name
39
{
40
xmlns_id_t ns;
41
std::string_view name;
42
43
entity_name
();
44
entity_name
(std::string_view _name);
45
entity_name
(xmlns_id_t _ns, std::string_view _name);
46
47
bool
operator== (
const
entity_name
& other)
const
;
48
bool
operator!= (
const
entity_name
& other)
const
;
49
};
50
51
class
ORCUS_DLLPUBLIC
const_node
52
{
53
friend
class
document_tree
;
54
55
struct
impl;
56
std::unique_ptr<impl> mp_impl;
57
58
const_node
(std::unique_ptr<impl>&& _impl);
59
public
:
60
const_node
();
61
const_node
(
const
const_node
& other);
62
const_node
(
const_node
&& other);
63
64
~const_node
();
65
66
node_t type()
const
;
67
68
size_t
child_count()
const
;
69
70
const_node
child(
size_t
index)
const
;
71
72
entity_name
name()
const
;
73
74
std::string_view attribute(
const
entity_name
& name)
const
;
75
std::string_view attribute(std::string_view name)
const
;
76
77
size_t
attribute_count()
const
;
78
79
const_node
parent()
const
;
80
81
void
swap(
const_node
& other);
82
83
const_node
& operator= (
const
const_node
& other);
84
85
bool
operator== (
const
const_node
& other)
const
;
86
bool
operator!= (
const
const_node
& other)
const
;
87
};
88
92
class
ORCUS_DLLPUBLIC
document_tree
93
{
94
struct
impl;
95
std::unique_ptr<impl> mp_impl;
96
97
public
:
98
document_tree
(
const
document_tree
&) =
delete
;
99
document_tree
& operator= (
const
document_tree
&) =
delete
;
100
101
document_tree
(
xmlns_context
& cxt);
102
document_tree
(
document_tree
&& other);
103
~document_tree
();
104
110
void
load
(std::string_view strm);
111
112
dom::const_node
root()
const
;
113
114
dom::const_node
declaration(std::string_view name)
const
;
115
121
void
swap
(
document_tree
& other);
122
123
const
sax::doctype_declaration
* get_doctype()
const
;
124
125
void
dump_compact(std::ostream& os)
const
;
126
};
127
128
}
// namespace dom
129
130
}
131
132
#endif
133
134
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
orcus::dom::const_node
Definition
dom_tree.hpp:52
orcus::dom::document_tree
Definition
dom_tree.hpp:93
orcus::dom::document_tree::swap
void swap(document_tree &other)
orcus::dom::document_tree::load
void load(std::string_view strm)
orcus::xmlns_context
Definition
xml_namespace.hpp:100
orcus::dom::entity_name
Definition
dom_tree.hpp:39
orcus::sax::doctype_declaration
Definition
sax_parser_base.hpp:37
Generated on Sun Feb 9 2025 19:10:43 for Orcus by
1.10.0