16#ifndef PUGIXML_VERSION
17# define PUGIXML_VERSION 1150
23#ifndef HEADER_PUGIXML_HPP
24#define HEADER_PUGIXML_HPP
30#if !defined(PUGIXML_NO_XPATH) && !defined(PUGIXML_NO_EXCEPTIONS)
42#if !defined(PUGIXML_HAS_STRING_VIEW) && !defined(PUGIXML_NO_STL)
43# if __cplusplus >= 201703L
44# define PUGIXML_HAS_STRING_VIEW
45# elif defined(_MSVC_LANG) && _MSVC_LANG >= 201703L
46# define PUGIXML_HAS_STRING_VIEW
51#ifdef PUGIXML_HAS_STRING_VIEW
52# include <string_view>
56#ifndef PUGIXML_DEPRECATED
58# define PUGIXML_DEPRECATED __attribute__((deprecated))
59# elif defined(_MSC_VER) && _MSC_VER >= 1300
60# define PUGIXML_DEPRECATED __declspec(deprecated)
62# define PUGIXML_DEPRECATED
73# define PUGIXML_CLASS PUGIXML_API
77#ifndef PUGIXML_FUNCTION
78# define PUGIXML_FUNCTION PUGIXML_API
82#ifndef PUGIXML_HAS_LONG_LONG
83# if __cplusplus >= 201103
84# define PUGIXML_HAS_LONG_LONG
85# elif defined(_MSC_VER) && _MSC_VER >= 1400
86# define PUGIXML_HAS_LONG_LONG
91#ifndef PUGIXML_HAS_MOVE
92# if __cplusplus >= 201103
93# define PUGIXML_HAS_MOVE
94# elif defined(_MSC_VER) && _MSC_VER >= 1600
95# define PUGIXML_HAS_MOVE
100#ifndef PUGIXML_NOEXCEPT
101# if __cplusplus >= 201103
102# define PUGIXML_NOEXCEPT noexcept
103# elif defined(_MSC_VER) && _MSC_VER >= 1900
104# define PUGIXML_NOEXCEPT noexcept
106# define PUGIXML_NOEXCEPT throw()
111#ifdef PUGIXML_COMPACT
112# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT
114# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT PUGIXML_NOEXCEPT
118#ifndef PUGIXML_OVERRIDE
119# if __cplusplus >= 201103
120# define PUGIXML_OVERRIDE override
121# elif defined(_MSC_VER) && _MSC_VER >= 1700
122# define PUGIXML_OVERRIDE override
124# define PUGIXML_OVERRIDE
130# if __cplusplus >= 201103
131# define PUGIXML_NULL nullptr
132# elif defined(_MSC_VER) && _MSC_VER >= 1600
133# define PUGIXML_NULL nullptr
135# define PUGIXML_NULL 0
140#ifdef PUGIXML_WCHAR_MODE
141# define PUGIXML_TEXT(t) L ## t
142# define PUGIXML_CHAR wchar_t
144# define PUGIXML_TEXT(t) t
145# define PUGIXML_CHAR char
153#ifndef PUGIXML_NO_STL
158#ifdef PUGIXML_HAS_STRING_VIEW
160 typedef std::basic_string_view<PUGIXML_CHAR> string_view_t;
319 #ifndef PUGIXML_NO_XPATH
338 It
end()
const {
return _end; }
340 bool empty()
const {
return _begin == _end; }
353 virtual void write(
const void* data,
size_t size) = 0;
369 #ifndef PUGIXML_NO_STL
381 std::basic_ostream<char>* narrow_stream;
382 std::basic_ostream<wchar_t>* wide_stream;
405 operator unspecified_bool_type()
const;
429 int as_int(
int def = 0)
const;
430 unsigned int as_uint(
unsigned int def = 0)
const;
432 float as_float(
float def = 0)
const;
434 #ifdef PUGIXML_HAS_LONG_LONG
435 long long as_llong(
long long def = 0)
const;
436 unsigned long long as_ullong(
unsigned long long def = 0)
const;
440 bool as_bool(
bool def =
false)
const;
445 #ifdef PUGIXML_HAS_STRING_VIEW
450 #ifdef PUGIXML_HAS_STRING_VIEW
460 bool set_value(
double rhs,
int precision);
462 bool set_value(
float rhs,
int precision);
465 #ifdef PUGIXML_HAS_LONG_LONG
480 #ifdef PUGIXML_HAS_STRING_VIEW
484 #ifdef PUGIXML_HAS_LONG_LONG
578 #ifdef PUGIXML_HAS_STRING_VIEW
587 #ifdef PUGIXML_HAS_STRING_VIEW
600 #ifdef PUGIXML_HAS_STRING_VIEW
605 #ifdef PUGIXML_HAS_STRING_VIEW
614 #ifdef PUGIXML_HAS_STRING_VIEW
638 #ifdef PUGIXML_HAS_STRING_VIEW
660 #ifdef PUGIXML_HAS_STRING_VIEW
670 #ifdef PUGIXML_HAS_STRING_VIEW
715 if (pred(cur))
return cur;
734 #ifndef PUGIXML_NO_STL
745 #ifndef PUGIXML_NO_XPATH
763 #ifndef PUGIXML_NO_STL
812 typedef void (*unspecified_bool_type)(xml_text***);
824 operator unspecified_bool_type()
const;
839 int as_int(
int def = 0)
const;
840 unsigned int as_uint(
unsigned int def = 0)
const;
842 float as_float(
float def = 0)
const;
844 #ifdef PUGIXML_HAS_LONG_LONG
845 long long as_llong(
long long def = 0)
const;
846 unsigned long long as_ullong(
unsigned long long def = 0)
const;
850 bool as_bool(
bool def =
false)
const;
854 bool set(
const char_t* rhs,
size_t size);
855 #ifdef PUGIXML_HAS_STRING_VIEW
856 bool set(string_view_t rhs);
861 bool set(
unsigned int rhs);
863 bool set(
unsigned long rhs);
864 bool set(
double rhs);
865 bool set(
double rhs,
int precision);
867 bool set(
float rhs,
int precision);
870 #ifdef PUGIXML_HAS_LONG_LONG
871 bool set(
long long rhs);
872 bool set(
unsigned long long rhs);
885 #ifdef PUGIXML_HAS_STRING_VIEW
889 #ifdef PUGIXML_HAS_LONG_LONG
891 xml_text&
operator=(
unsigned long long rhs);
922 #ifndef PUGIXML_NO_STL
930 xml_node_iterator(
const xml_node& node);
933 bool operator==(
const xml_node_iterator& rhs)
const;
934 bool operator!=(
const xml_node_iterator& rhs)
const;
964 #ifndef PUGIXML_NO_STL
969 xml_attribute_iterator();
975 bool operator==(
const xml_attribute_iterator& rhs)
const;
976 bool operator!=(
const xml_attribute_iterator& rhs)
const;
1000 #ifndef PUGIXML_NO_STL
1101 operator bool()
const;
1116 xml_document(
const xml_document&);
1117 xml_document& operator=(
const xml_document&);
1130 #ifdef PUGIXML_HAS_MOVE
1140 void reset(
const xml_document& proto);
1142 #ifndef PUGIXML_NO_STL
1172 #ifndef PUGIXML_NO_STL
1186#ifndef PUGIXML_NO_XPATH
1210 operator bool()
const;
1245 bool set(
bool value);
1246 bool set(
double value);
1274 #ifdef PUGIXML_HAS_MOVE
1284 bool set(
const char_t* name,
bool value);
1285 bool set(
const char_t* name,
double value);
1301 typedef void (*unspecified_bool_type)(xpath_query***);
1304 xpath_query(
const xpath_query&);
1305 xpath_query& operator=(
const xpath_query&);
1318 #ifdef PUGIXML_HAS_MOVE
1335 #ifndef PUGIXML_NO_STL
1362 operator unspecified_bool_type()
const;
1368 #ifndef PUGIXML_NO_EXCEPTIONS
1369 #if defined(_MSC_VER)
1372 #pragma warning(push)
1373 #pragma warning(disable: 4275)
1391 #if defined(_MSC_VER)
1392 #pragma warning(pop)
1403 typedef void (*unspecified_bool_type)(
xpath_node***);
1421 operator unspecified_bool_type()
const;
1468 #ifdef PUGIXML_HAS_MOVE
1478 size_t size()
const;
1509#ifndef PUGIXML_NO_STL
1520 typedef void* (*allocation_function)(
size_t size);
1533#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC))
1543#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC)
1547 std::bidirectional_iterator_tag
PUGIXML_FUNCTION __iterator_category(
const pugi::xml_node_iterator&);
1548 std::bidirectional_iterator_tag
PUGIXML_FUNCTION __iterator_category(
const pugi::xml_attribute_iterator&);
1549 std::bidirectional_iterator_tag
PUGIXML_FUNCTION __iterator_category(
const pugi::xml_named_node_iterator&);
1557#if defined(PUGIXML_HEADER_ONLY) && !defined(PUGIXML_SOURCE)
1558# define PUGIXML_SOURCE "pugixml.cpp"
1559# include PUGIXML_SOURCE
Definition pugixml.hpp:948
ptrdiff_t difference_type
Definition pugixml.hpp:959
friend class xml_node
Definition pugixml.hpp:949
xml_attribute value_type
Definition pugixml.hpp:960
bool operator!=(const xml_attribute_iterator &rhs) const
Definition pugixml.cpp:7304
bool operator==(const xml_attribute_iterator &rhs) const
Definition pugixml.cpp:7299
xml_attribute * operator->() const
Definition pugixml.cpp:7315
xml_attribute & operator*() const
Definition pugixml.cpp:7309
xml_attribute * pointer
Definition pugixml.hpp:961
std::bidirectional_iterator_tag iterator_category
Definition pugixml.hpp:965
xml_attribute_iterator & operator--()
Definition pugixml.cpp:7335
xml_attribute_iterator & operator++()
Definition pugixml.cpp:7321
xml_attribute & reference
Definition pugixml.hpp:962
Definition pugixml.hpp:388
bool operator<=(const xml_attribute &r) const
Definition pugixml.cpp:5276
bool operator!=(const xml_attribute &r) const
Definition pugixml.cpp:5261
friend class xml_node
Definition pugixml.hpp:390
bool operator>(const xml_attribute &r) const
Definition pugixml.cpp:5271
bool operator!() const
Definition pugixml.cpp:5251
double as_double(double def=0) const
Definition pugixml.cpp:5320
bool set_name(const char_t *rhs)
Definition pugixml.cpp:5456
xml_attribute & operator=(const char_t *rhs)
Definition pugixml.cpp:5386
const char_t * name() const
Definition pugixml.cpp:5362
bool set_value(const char_t *rhs)
Definition pugixml.cpp:5479
bool empty() const
Definition pugixml.cpp:5357
bool operator<(const xml_attribute &r) const
Definition pugixml.cpp:5266
bool operator==(const xml_attribute &r) const
Definition pugixml.cpp:5256
xml_attribute previous_attribute() const
Definition pugixml.cpp:5292
bool operator>=(const xml_attribute &r) const
Definition pugixml.cpp:5281
xml_attribute next_attribute() const
Definition pugixml.cpp:5286
const char_t * value() const
Definition pugixml.cpp:5369
xml_attribute_struct * internal_object() const
Definition pugixml.cpp:5381
unsigned int as_uint(unsigned int def=0) const
Definition pugixml.cpp:5313
size_t hash_value() const
Definition pugixml.cpp:5376
xml_attribute()
Definition pugixml.cpp:5234
const char_t * as_string(const char_t *def=PUGIXML_TEXT("")) const
Definition pugixml.cpp:5299
friend class xml_attribute_iterator
Definition pugixml.hpp:389
float as_float(float def=0) const
Definition pugixml.cpp:5327
int as_int(int def=0) const
Definition pugixml.cpp:5306
bool as_bool(bool def=false) const
Definition pugixml.cpp:5334
xml_parse_result load_buffer_inplace_own(void *contents, size_t size, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:7760
bool save_file(const char *path, const char_t *indent=PUGIXML_TEXT("\t"), unsigned int flags=format_default, xml_encoding encoding=encoding_auto) const
Definition pugixml.cpp:7811
xml_parse_result load_buffer_inplace(void *contents, size_t size, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:7753
void reset()
Definition pugixml.cpp:7487
xml_parse_result load_buffer(const void *contents, size_t size, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:7746
xml_node document_element() const
Definition pugixml.cpp:7827
void save(xml_writer &writer, const char_t *indent=PUGIXML_TEXT("\t"), unsigned int flags=format_default, xml_encoding encoding=encoding_auto) const
Definition pugixml.cpp:7767
xml_parse_result load_string(const char_t *contents, unsigned int options=parse_default)
Definition pugixml.cpp:7709
xml_parse_result load(std::basic_istream< char > &stream, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:7694
xml_parse_result load_file(const char *path, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:7726
Definition pugixml.hpp:990
friend class xml_node
Definition pugixml.hpp:991
ptrdiff_t difference_type
Definition pugixml.hpp:995
xml_node & reference
Definition pugixml.hpp:998
xml_named_node_iterator & operator++()
Definition pugixml.cpp:7382
xml_named_node_iterator()
Definition pugixml.cpp:7348
xml_node & operator*() const
Definition pugixml.cpp:7370
xml_node value_type
Definition pugixml.hpp:996
xml_named_node_iterator & operator--()
Definition pugixml.cpp:7396
bool operator==(const xml_named_node_iterator &rhs) const
Definition pugixml.cpp:7360
xml_node * operator->() const
Definition pugixml.cpp:7376
std::bidirectional_iterator_tag iterator_category
Definition pugixml.hpp:1001
bool operator!=(const xml_named_node_iterator &rhs) const
Definition pugixml.cpp:7365
xml_node * pointer
Definition pugixml.hpp:997
Definition pugixml.hpp:906
xml_node_iterator & operator--()
Definition pugixml.cpp:7274
friend class xml_node
Definition pugixml.hpp:907
bool operator==(const xml_node_iterator &rhs) const
Definition pugixml.cpp:7238
xml_node value_type
Definition pugixml.hpp:918
bool operator!=(const xml_node_iterator &rhs) const
Definition pugixml.cpp:7243
xml_node * pointer
Definition pugixml.hpp:919
xml_node_iterator & operator++()
Definition pugixml.cpp:7260
std::bidirectional_iterator_tag iterator_category
Definition pugixml.hpp:923
xml_node * operator->() const
Definition pugixml.cpp:7254
xml_node & reference
Definition pugixml.hpp:920
ptrdiff_t difference_type
Definition pugixml.hpp:917
xml_node & operator*() const
Definition pugixml.cpp:7248
Definition pugixml.hpp:508
size_t hash_value() const
Definition pugixml.cpp:6833
xml_node insert_child_before(xml_node_type type, const xml_node &node)
Definition pugixml.cpp:6284
xml_node parent() const
Definition pugixml.cpp:5910
xml_node root() const
Definition pugixml.cpp:5915
bool operator!() const
Definition pugixml.cpp:5610
xml_node previous_sibling() const
Definition pugixml.cpp:5903
xml_attribute prepend_copy(const xml_attribute &proto)
Definition pugixml.cpp:6197
xml_node prepend_move(const xml_node &moved)
Definition pugixml.cpp:6480
friend class xml_named_node_iterator
Definition pugixml.hpp:511
bool empty() const
Definition pugixml.cpp:5680
bool operator>=(const xml_node &r) const
Definition pugixml.cpp:5675
bool operator!=(const xml_node &r) const
Definition pugixml.cpp:5655
xml_attribute attribute(const char_t *name) const
Definition pugixml.cpp:5718
xml_attribute first_attribute() const
Definition pugixml.cpp:5948
xml_node last_child() const
Definition pugixml.cpp:5967
ptrdiff_t offset_debug() const
Definition pugixml.cpp:6870
xml_attribute insert_copy_after(const xml_attribute &proto, const xml_attribute &attr)
Definition pugixml.cpp:6214
xml_node child(const char_t *name) const
Definition pugixml.cpp:5704
xml_attribute find_attribute(Predicate pred) const
Definition pugixml.hpp:683
xml_node_struct * _root
Definition pugixml.hpp:514
bool set_name(const char_t *rhs)
Definition pugixml.cpp:5974
xml_node()
Definition pugixml.cpp:5593
attribute_iterator attributes_begin() const
Definition pugixml.cpp:5625
xml_object_range< xml_node_iterator > children() const
Definition pugixml.cpp:5635
const char_t * child_value() const
Definition pugixml.cpp:5925
bool remove_children()
Definition pugixml.cpp:6604
bool set_value(const char_t *rhs)
Definition pugixml.cpp:6006
xml_text text() const
Definition pugixml.cpp:5920
bool remove_attributes()
Definition pugixml.cpp:6558
xml_attribute insert_copy_before(const xml_attribute &proto, const xml_attribute &attr)
Definition pugixml.cpp:6232
void(* unspecified_bool_type)(xml_node ***)
Definition pugixml.hpp:516
xml_node find_node(Predicate pred) const
Definition pugixml.hpp:707
xml_attribute_iterator attribute_iterator
Definition pugixml.hpp:776
const char_t * value() const
Definition pugixml.cpp:5697
string_t path(char_t delimiter='/') const
Definition pugixml.cpp:6708
xml_node_type type() const
Definition pugixml.cpp:5692
friend class xml_node_iterator
Definition pugixml.hpp:510
xml_parse_result append_buffer(const void *contents, size_t size, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cpp:6625
xml_node append_move(const xml_node &moved)
Definition pugixml.cpp:6464
xml_object_range< xml_attribute_iterator > attributes() const
Definition pugixml.cpp:5645
iterator end() const
Definition pugixml.cpp:5620
const char_t * name() const
Definition pugixml.cpp:5685
xml_node insert_move_after(const xml_node &moved, const xml_node &node)
Definition pugixml.cpp:6496
xml_attribute append_copy(const xml_attribute &proto)
Definition pugixml.cpp:6180
bool remove_child(const xml_node &n)
Definition pugixml.cpp:6591
xml_node first_child() const
Definition pugixml.cpp:5961
bool operator>(const xml_node &r) const
Definition pugixml.cpp:5665
xml_node find_child(Predicate pred) const
Definition pugixml.hpp:695
xml_attribute last_attribute() const
Definition pugixml.cpp:5954
bool operator==(const xml_node &r) const
Definition pugixml.cpp:5650
bool operator<=(const xml_node &r) const
Definition pugixml.cpp:5670
xml_node insert_child_after(xml_node_type type, const xml_node &node)
Definition pugixml.cpp:6302
attribute_iterator attributes_end() const
Definition pugixml.cpp:5630
xml_node_iterator iterator
Definition pugixml.hpp:770
xml_node next_sibling() const
Definition pugixml.cpp:5746
xml_node insert_move_before(const xml_node &moved, const xml_node &node)
Definition pugixml.cpp:6514
xml_node prepend_child(xml_node_type type=node_element)
Definition pugixml.cpp:6267
iterator begin() const
Definition pugixml.cpp:5615
friend class xml_attribute_iterator
Definition pugixml.hpp:509
bool operator<(const xml_node &r) const
Definition pugixml.cpp:5660
xml_node_struct * internal_object() const
Definition pugixml.cpp:6838
xml_node append_child(xml_node_type type=node_element)
Definition pugixml.cpp:6250
Definition pugixml.hpp:328
It iterator
Definition pugixml.hpp:331
It begin() const
Definition pugixml.hpp:337
bool empty() const
Definition pugixml.hpp:340
xml_object_range(It b, It e)
Definition pugixml.hpp:333
It end() const
Definition pugixml.hpp:338
It const_iterator
Definition pugixml.hpp:330
Definition pugixml.hpp:807
const char_t * as_string(const char_t *def=PUGIXML_TEXT("")) const
Definition pugixml.cpp:6971
friend class xml_node
Definition pugixml.hpp:808
double as_double(double def=0) const
Definition pugixml.cpp:6995
const char_t * get() const
Definition pugixml.cpp:6963
xml_text & operator=(const char_t *rhs)
Definition pugixml.cpp:7139
bool operator!() const
Definition pugixml.cpp:6953
unsigned int as_uint(unsigned int def=0) const
Definition pugixml.cpp:6987
float as_float(float def=0) const
Definition pugixml.cpp:7003
int as_int(int def=0) const
Definition pugixml.cpp:6979
bool empty() const
Definition pugixml.cpp:6958
bool set(const char_t *rhs)
Definition pugixml.cpp:7037
xml_node data() const
Definition pugixml.cpp:7209
bool as_bool(bool def=false) const
Definition pugixml.cpp:7011
Definition pugixml.hpp:1034
friend class xml_node
Definition pugixml.hpp:1035
xml_tree_walker()
Definition pugixml.cpp:5211
virtual bool for_each(xml_node &node)=0
int depth() const
Definition pugixml.cpp:5219
virtual bool begin(xml_node &node)
Definition pugixml.cpp:5224
virtual bool end(xml_node &node)
Definition pugixml.cpp:5229
virtual void write(const void *data, size_t size) PUGIXML_OVERRIDE
Definition pugixml.cpp:5179
xml_writer_file(void *file)
Definition pugixml.cpp:5175
xml_writer_stream(std::basic_ostream< char > &stream)
Definition pugixml.cpp:5186
virtual void write(const void *data, size_t size) PUGIXML_OVERRIDE
Definition pugixml.cpp:5194
Definition pugixml.hpp:348
virtual void write(const void *data, size_t size)=0
virtual const char * what() const PUGIXML_NOEXCEPT PUGIXML_OVERRIDE
Definition pugixml.cpp:12702
const xpath_parse_result & result() const
Definition pugixml.cpp:12707
xpath_exception(const xpath_parse_result &result)
Definition pugixml.cpp:12697
Definition pugixml.hpp:1439
xpath_node_set & operator=(const xpath_node_set &ns)
Definition pugixml.cpp:12841
size_t size() const
Definition pugixml.cpp:12874
xpath_node first() const
Definition pugixml.cpp:12905
const xpath_node & operator[](size_t index) const
Definition pugixml.cpp:12884
const_iterator end() const
Definition pugixml.cpp:12895
const xpath_node * const_iterator
Definition pugixml.hpp:1450
type_t
Definition pugixml.hpp:1443
@ type_sorted_reverse
Definition pugixml.hpp:1446
@ type_unsorted
Definition pugixml.hpp:1444
@ type_sorted
Definition pugixml.hpp:1445
xpath_node_set()
Definition pugixml.cpp:12821
const xpath_node * iterator
Definition pugixml.hpp:1453
const_iterator begin() const
Definition pugixml.cpp:12890
bool empty() const
Definition pugixml.cpp:12879
type_t type() const
Definition pugixml.cpp:12869
Definition pugixml.hpp:1398
xml_attribute attribute() const
Definition pugixml.cpp:12730
bool operator!=(const xpath_node &n) const
Definition pugixml.cpp:12759
xml_node parent() const
Definition pugixml.cpp:12735
bool operator==(const xpath_node &n) const
Definition pugixml.cpp:12754
bool operator!() const
Definition pugixml.cpp:12749
xml_node node() const
Definition pugixml.cpp:12725
xpath_node()
Definition pugixml.cpp:12713
Definition pugixml.hpp:1296
bool operator!() const
Definition pugixml.cpp:13438
xpath_node evaluate_node(const xpath_node &n) const
Definition pugixml.cpp:13402
bool evaluate_boolean(const xpath_node &n) const
Definition pugixml.cpp:13285
xpath_value_type return_type() const
Definition pugixml.cpp:13278
xpath_node_set evaluate_node_set(const xpath_node &n) const
Definition pugixml.cpp:13380
double evaluate_number(const xpath_node &n) const
Definition pugixml.cpp:13306
const xpath_parse_result & result() const
Definition pugixml.cpp:13424
string_t evaluate_string(const xpath_node &n) const
Definition pugixml.cpp:13328
Definition pugixml.hpp:1253
xpath_variable_set & operator=(const xpath_variable_set &rhs)
Definition pugixml.cpp:13041
xpath_variable_set()
Definition pugixml.cpp:13021
xpath_variable * add(const char_t *name, xpath_value_type type)
Definition pugixml.cpp:13148
bool set(const char_t *name, bool value)
Definition pugixml.cpp:13171
xpath_variable * get(const char_t *name)
Definition pugixml.cpp:13195
Definition pugixml.hpp:1218
xpath_variable * _next
Definition pugixml.hpp:1223
xpath_value_type type() const
Definition pugixml.cpp:12950
double get_number() const
Definition pugixml.cpp:12960
xpath_variable(const xpath_variable &)
const char_t * get_string() const
Definition pugixml.cpp:12965
bool get_boolean() const
Definition pugixml.cpp:12955
xpath_variable(xpath_value_type type)
Definition pugixml.cpp:12924
xpath_variable & operator=(const xpath_variable &)
const char_t * name() const
Definition pugixml.cpp:12928
bool set(bool value)
Definition pugixml.cpp:12976
const xpath_node_set & get_node_set() const
Definition pugixml.cpp:12971
friend class xpath_variable_set
Definition pugixml.hpp:1219
xpath_value_type _type
Definition pugixml.hpp:1222
Definition pugixml.cpp:1132
const unsigned int format_no_empty_element_tags
Definition pugixml.hpp:288
xml_encoding
Definition pugixml.hpp:251
@ encoding_utf32
Definition pugixml.hpp:259
@ encoding_utf16_le
Definition pugixml.hpp:254
@ encoding_utf32_be
Definition pugixml.hpp:258
@ encoding_utf16_be
Definition pugixml.hpp:255
@ encoding_utf8
Definition pugixml.hpp:253
@ encoding_latin1
Definition pugixml.hpp:261
@ encoding_utf16
Definition pugixml.hpp:256
@ encoding_utf32_le
Definition pugixml.hpp:257
@ encoding_auto
Definition pugixml.hpp:252
@ encoding_wchar
Definition pugixml.hpp:260
PUGI_IMPL_FN deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function()
Definition pugixml.cpp:7875
PUGI_IMPL_FN std::basic_string< wchar_t > PUGIXML_FUNCTION as_wide(const char *str)
Definition pugixml.cpp:7851
PUGI_IMPL_FN allocation_function PUGIXML_FUNCTION get_memory_allocation_function()
Definition pugixml.cpp:7870
const unsigned int format_no_declaration
Definition pugixml.hpp:276
xml_node_type
Definition pugixml.hpp:169
@ node_comment
Definition pugixml.hpp:175
@ node_pcdata
Definition pugixml.hpp:173
@ node_element
Definition pugixml.hpp:172
@ node_doctype
Definition pugixml.hpp:178
@ node_document
Definition pugixml.hpp:171
@ node_declaration
Definition pugixml.hpp:177
@ node_pi
Definition pugixml.hpp:176
@ node_null
Definition pugixml.hpp:170
@ node_cdata
Definition pugixml.hpp:174
const unsigned int parse_trim_pcdata
Definition pugixml.hpp:224
const unsigned int parse_wconv_attribute
Definition pugixml.hpp:207
const unsigned int format_skip_control_chars
Definition pugixml.hpp:291
const unsigned int format_raw
Definition pugixml.hpp:273
const unsigned int format_default
Definition pugixml.hpp:298
void(* deallocation_function)(void *ptr)
Definition pugixml.hpp:1523
const int default_double_precision
Definition pugixml.hpp:300
const unsigned int parse_cdata
Definition pugixml.hpp:194
void *(* allocation_function)(size_t size)
Definition pugixml.hpp:1520
const unsigned int parse_merge_pcdata
Definition pugixml.hpp:237
const unsigned int parse_fragment
Definition pugixml.hpp:228
const unsigned int parse_full
Definition pugixml.hpp:247
const unsigned int parse_embed_pcdata
Definition pugixml.hpp:233
const unsigned int parse_wnorm_attribute
Definition pugixml.hpp:210
const unsigned int format_indent_attributes
Definition pugixml.hpp:285
const unsigned int parse_pi
Definition pugixml.hpp:188
xml_parse_status
Definition pugixml.hpp:1060
@ status_append_invalid_root
Definition pugixml.hpp:1080
@ status_end_element_mismatch
Definition pugixml.hpp:1078
@ status_bad_end_element
Definition pugixml.hpp:1077
@ status_io_error
Definition pugixml.hpp:1064
@ status_bad_attribute
Definition pugixml.hpp:1076
@ status_file_not_found
Definition pugixml.hpp:1063
@ status_internal_error
Definition pugixml.hpp:1066
@ status_bad_start_element
Definition pugixml.hpp:1075
@ status_ok
Definition pugixml.hpp:1061
@ status_bad_comment
Definition pugixml.hpp:1071
@ status_bad_doctype
Definition pugixml.hpp:1073
@ status_out_of_memory
Definition pugixml.hpp:1065
@ status_unrecognized_tag
Definition pugixml.hpp:1068
@ status_bad_cdata
Definition pugixml.hpp:1072
@ status_bad_pcdata
Definition pugixml.hpp:1074
@ status_bad_pi
Definition pugixml.hpp:1070
@ status_no_document_element
Definition pugixml.hpp:1082
PUGI_IMPL_FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t *str)
Definition pugixml.cpp:7839
const unsigned int format_save_file_text
Definition pugixml.hpp:282
const unsigned int parse_escapes
Definition pugixml.hpp:201
const unsigned int format_write_bom
Definition pugixml.hpp:270
PUGI_IMPL_FN void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate)
Definition pugixml.cpp:7864
const unsigned int format_attribute_single_quote
Definition pugixml.hpp:294
const unsigned int format_indent
Definition pugixml.hpp:267
const unsigned int parse_eol
Definition pugixml.hpp:204
const unsigned int parse_default
Definition pugixml.hpp:242
const unsigned int parse_declaration
Definition pugixml.hpp:213
const unsigned int parse_comments
Definition pugixml.hpp:191
xpath_value_type
Definition pugixml.hpp:1189
@ xpath_type_number
Definition pugixml.hpp:1192
@ xpath_type_boolean
Definition pugixml.hpp:1194
@ xpath_type_none
Definition pugixml.hpp:1190
@ xpath_type_string
Definition pugixml.hpp:1193
@ xpath_type_node_set
Definition pugixml.hpp:1191
const unsigned int parse_ws_pcdata
Definition pugixml.hpp:198
const unsigned int parse_minimal
Definition pugixml.hpp:185
const unsigned int parse_ws_pcdata_single
Definition pugixml.hpp:221
const unsigned int format_no_escapes
Definition pugixml.hpp:279
PUGIXML_CHAR char_t
Definition pugixml.hpp:151
const int default_float_precision
Definition pugixml.hpp:301
std::basic_string< PUGIXML_CHAR > string_t
Definition pugixml.hpp:155
const unsigned int parse_doctype
Definition pugixml.hpp:216
PUGI_IMPL_FN void sort(I begin, I end, const Pred &pred)
Definition pugixml.cpp:8068
PUGI_IMPL_FN void reverse(I begin, I end)
Definition pugixml.cpp:7976
void remove_attribute(xml_attribute_struct *attr, xml_node_struct *node)
Definition pugixml.cpp:1432
void insert_attribute_before(xml_attribute_struct *attr, xml_attribute_struct *place, xml_node_struct *node)
Definition pugixml.cpp:1418
void append_attribute(xml_attribute_struct *attr, xml_node_struct *node)
Definition pugixml.cpp:1369
void prepend_attribute(xml_attribute_struct *attr, xml_node_struct *node)
Definition pugixml.cpp:1388
allocation_function xml_memory_management_function_storage< T >::allocate
Definition pugixml.cpp:223
deallocation_function xml_memory_management_function_storage< T >::deallocate
Definition pugixml.cpp:224
void insert_attribute_after(xml_attribute_struct *attr, xml_attribute_struct *place, xml_node_struct *node)
Definition pugixml.cpp:1404
#define PUGIXML_NULL
Definition pugixml.hpp:135
#define PUGIXML_DEPRECATED
Definition pugixml.hpp:62
#define PUGIXML_NOEXCEPT_IF_NOT_COMPACT
Definition pugixml.hpp:114
#define PUGIXML_FUNCTION
Definition pugixml.hpp:78
#define PUGIXML_NOEXCEPT
Definition pugixml.hpp:106
#define PUGIXML_OVERRIDE
Definition pugixml.hpp:124
#define PUGIXML_CLASS
Definition pugixml.hpp:73
#define PUGIXML_TEXT(t)
Definition pugixml.hpp:144
#define PUGIXML_CHAR
Definition pugixml.hpp:145
Definition pugixml.cpp:1134
Definition pugixml.cpp:1150
Definition pugixml.hpp:1087
const char * description() const
Definition pugixml.cpp:7427
xml_encoding encoding
Definition pugixml.hpp:1095
ptrdiff_t offset
Definition pugixml.hpp:1092
xml_parse_status status
Definition pugixml.hpp:1089
xml_parse_result()
Definition pugixml.cpp:7418
Definition pugixml.hpp:1199
const char * description() const
Definition pugixml.cpp:12919
const char * error
Definition pugixml.hpp:1201
ptrdiff_t offset
Definition pugixml.hpp:1204
xpath_parse_result()
Definition pugixml.cpp:12910