14#ifndef PUGIXML_VERSION
17# define PUGIXML_VERSION 1100
21#include "pugiconfig.hpp"
23#ifndef HEADER_PUGIXML_HPP
24#define HEADER_PUGIXML_HPP
30#if !defined(PUGIXML_NO_XPATH) && !defined(PUGIXML_NO_EXCEPTIONS)
42#ifndef PUGIXML_DEPRECATED
44# define PUGIXML_DEPRECATED __attribute__((deprecated))
45# elif defined(_MSC_VER) && _MSC_VER >= 1300
46# define PUGIXML_DEPRECATED __declspec(deprecated)
48# define PUGIXML_DEPRECATED
59# define PUGIXML_CLASS PUGIXML_API
63#ifndef PUGIXML_FUNCTION
64# define PUGIXML_FUNCTION PUGIXML_API
68#ifndef PUGIXML_HAS_LONG_LONG
69# if __cplusplus >= 201103
70# define PUGIXML_HAS_LONG_LONG
71# elif defined(_MSC_VER) && _MSC_VER >= 1400
72# define PUGIXML_HAS_LONG_LONG
77#ifndef PUGIXML_HAS_MOVE
78# if __cplusplus >= 201103
79# define PUGIXML_HAS_MOVE
80# elif defined(_MSC_VER) && _MSC_VER >= 1600
81# define PUGIXML_HAS_MOVE
86#ifndef PUGIXML_NOEXCEPT
87# if __cplusplus >= 201103
88# define PUGIXML_NOEXCEPT noexcept
89# elif defined(_MSC_VER) && _MSC_VER >= 1900
90# define PUGIXML_NOEXCEPT noexcept
92# define PUGIXML_NOEXCEPT
98# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT
100# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT PUGIXML_NOEXCEPT
104#ifndef PUGIXML_OVERRIDE
105# if __cplusplus >= 201103
106# define PUGIXML_OVERRIDE override
107# elif defined(_MSC_VER) && _MSC_VER >= 1700
108# define PUGIXML_OVERRIDE override
110# define PUGIXML_OVERRIDE
115#ifdef PUGIXML_WCHAR_MODE
116# define PUGIXML_TEXT(t) L ## t
117# define PUGIXML_CHAR wchar_t
119# define PUGIXML_TEXT(t) t
120# define PUGIXML_CHAR char
128#ifndef PUGIXML_NO_STL
130 typedef std::basic_string<PUGIXML_CHAR, std::char_traits<PUGIXML_CHAR>, std::allocator<PUGIXML_CHAR> >
string_t;
282 #ifndef PUGIXML_NO_XPATH
330 #ifndef PUGIXML_NO_STL
337 xml_writer_stream(std::basic_ostream<
wchar_t, std::char_traits<wchar_t> >& stream);
343 std::basic_ostream<wchar_t, std::char_traits<wchar_t> >*
wide_stream;
366 operator unspecified_bool_type()
const;
369 bool operator!()
const;
384 const char_t* value()
const;
390 int as_int(
int def = 0)
const;
391 unsigned int as_uint(
unsigned int def = 0)
const;
392 double as_double(
double def = 0)
const;
393 float as_float(
float def = 0)
const;
395 #ifdef PUGIXML_HAS_LONG_LONG
396 long long as_llong(
long long def = 0)
const;
397 unsigned long long as_ullong(
unsigned long long def = 0)
const;
401 bool as_bool(
bool def =
false)
const;
404 bool set_name(
const char_t* rhs);
405 bool set_value(
const char_t* rhs);
408 bool set_value(
int rhs);
409 bool set_value(
unsigned int rhs);
410 bool set_value(
long rhs);
411 bool set_value(
unsigned long rhs);
412 bool set_value(
double rhs);
413 bool set_value(
float rhs);
414 bool set_value(
bool rhs);
416 #ifdef PUGIXML_HAS_LONG_LONG
417 bool set_value(
long long rhs);
418 bool set_value(
unsigned long long rhs);
431 #ifdef PUGIXML_HAS_LONG_LONG
441 size_t hash_value()
const;
463 typedef void (*unspecified_bool_type)(
xml_node***);
473 operator unspecified_bool_type()
const;
476 bool operator!()
const;
480 bool operator!=(
const xml_node& r)
const;
481 bool operator<(
const xml_node& r)
const;
482 bool operator>(
const xml_node& r)
const;
483 bool operator<=(
const xml_node& r)
const;
484 bool operator>=(
const xml_node& r)
const;
497 const char_t* value()
const;
530 const char_t* child_value()
const;
536 bool set_name(
const char_t* rhs);
537 bool set_value(
const char_t* rhs);
580 bool remove_child(
const xml_node& n);
621 if (pred(cur))
return cur;
640 #ifndef PUGIXML_NO_STL
651 #ifndef PUGIXML_NO_XPATH
669 #ifndef PUGIXML_NO_STL
671 void print(std::basic_ostream<
char, std::char_traits<char> >& os,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto,
unsigned int depth = 0)
const;
672 void print(std::basic_ostream<
wchar_t, std::char_traits<wchar_t> >& os,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default,
unsigned int depth = 0)
const;
693 ptrdiff_t offset_debug()
const;
696 size_t hash_value()
const;
715 typedef void (*unspecified_bool_type)(
xml_text***);
727 operator unspecified_bool_type()
const;
730 bool operator!()
const;
736 const char_t* get()
const;
742 int as_int(
int def = 0)
const;
743 unsigned int as_uint(
unsigned int def = 0)
const;
744 double as_double(
double def = 0)
const;
745 float as_float(
float def = 0)
const;
747 #ifdef PUGIXML_HAS_LONG_LONG
748 long long as_llong(
long long def = 0)
const;
749 unsigned long long as_ullong(
unsigned long long def = 0)
const;
753 bool as_bool(
bool def =
false)
const;
760 bool set(
unsigned int rhs);
762 bool set(
unsigned long rhs);
763 bool set(
double rhs);
767 #ifdef PUGIXML_HAS_LONG_LONG
768 bool set(
long long rhs);
769 bool set(
unsigned long long rhs);
775 xml_text& operator=(
unsigned int rhs);
777 xml_text& operator=(
unsigned long rhs);
782 #ifdef PUGIXML_HAS_LONG_LONG
784 xml_text& operator=(
unsigned long long rhs);
815 #ifndef PUGIXML_NO_STL
857 #ifndef PUGIXML_NO_STL
893 #ifndef PUGIXML_NO_STL
993 operator bool()
const;
996 const char* description()
const;
1022 #ifdef PUGIXML_HAS_MOVE
1034 #ifndef PUGIXML_NO_STL
1037 xml_parse_result load(std::basic_istream<
wchar_t, std::char_traits<wchar_t> >& stream,
unsigned int options = parse_default);
1064 #ifndef PUGIXML_NO_STL
1066 void save(std::basic_ostream<
char, std::char_traits<char> >& stream,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto)
const;
1067 void save(std::basic_ostream<
wchar_t, std::char_traits<wchar_t> >& stream,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default)
const;
1071 bool save_file(
const char* path,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto)
const;
1072 bool save_file(
const wchar_t* path,
const char_t* indent =
PUGIXML_TEXT(
"\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto)
const;
1078#ifndef PUGIXML_NO_XPATH
1102 operator bool()
const;
1105 const char* description()
const;
1131 bool get_boolean()
const;
1132 double get_number()
const;
1133 const char_t* get_string()
const;
1137 bool set(
bool value);
1138 bool set(
double value);
1166 #ifdef PUGIXML_HAS_MOVE
1210 #ifdef PUGIXML_HAS_MOVE
1221 bool evaluate_boolean(
const xpath_node& n)
const;
1225 double evaluate_number(
const xpath_node& n)
const;
1227 #ifndef PUGIXML_NO_STL
1254 operator unspecified_bool_type()
const;
1257 bool operator!()
const;
1260 #ifndef PUGIXML_NO_EXCEPTIONS
1261 #if defined(_MSC_VER)
1264 #pragma warning(push)
1265 #pragma warning(disable: 4275)
1283 #if defined(_MSC_VER)
1284 #pragma warning(pop)
1313 operator unspecified_bool_type()
const;
1316 bool operator!()
const;
1360 #ifdef PUGIXML_HAS_MOVE
1370 size_t size()
const;
1373 const xpath_node& operator[](
size_t index)
const;
1401#ifndef PUGIXML_NO_STL
1404 std::basic_string<char, std::char_traits<char>, std::allocator<char> >
PUGIXML_FUNCTION as_utf8(
const std::basic_string<
wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&
str);
1408 std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >
PUGIXML_FUNCTION as_wide(
const std::basic_string<
char, std::char_traits<char>, std::allocator<char> >&
str);
1412 typedef void* (*allocation_function)(
size_t size);
1415 typedef void (*deallocation_function)(
void* ptr);
1425#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC))
1435#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC)
1449#if defined(PUGIXML_HEADER_ONLY) && !defined(PUGIXML_SOURCE)
1450# define PUGIXML_SOURCE "pugixml.cpp"
1451# include PUGIXML_SOURCE
ptrdiff_t difference_type
std::bidirectional_iterator_tag iterator_category
xml_attribute & reference
xml_attribute_struct * _attr
xml_attribute next_attribute() const
xml_document(const xml_document &)
xml_document & operator=(const xml_document &)
void _move(xml_document &rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT
ptrdiff_t difference_type
std::bidirectional_iterator_tag iterator_category
std::bidirectional_iterator_tag iterator_category
ptrdiff_t difference_type
xml_node first_child() const
xml_node next_sibling() const
xml_attribute find_attribute(Predicate pred) const
xml_node find_node(Predicate pred) const
xml_attribute_iterator attribute_iterator
xml_node find_child(Predicate pred) const
xml_node_iterator iterator
xml_object_range(It b, It e)
virtual bool for_each(xml_node &node)=0
std::basic_ostream< wchar_t, std::char_traits< wchar_t > > * wide_stream
std::basic_ostream< char, std::char_traits< char > > * narrow_stream
virtual void write(const void *data, size_t size)=0
xpath_parse_result _result
const xpath_node * const_iterator
const xpath_node * iterator
void _move(xpath_node_set &rhs) PUGIXML_NOEXCEPT
xpath_parse_result _result
xpath_query & operator=(const xpath_query &)
xpath_query(const xpath_query &)
xpath_variable(const xpath_variable &)
xpath_variable & operator=(const xpath_variable &)
Reference counting helper.
const unsigned int format_no_empty_element_tags
std::basic_string< PUGIXML_CHAR, std::char_traits< PUGIXML_CHAR >, std::allocator< PUGIXML_CHAR > > string_t
const unsigned int format_no_declaration
const unsigned int parse_trim_pcdata
const unsigned int parse_wconv_attribute
const unsigned int format_skip_control_chars
const unsigned int format_raw
const unsigned int format_default
void(* deallocation_function)(void *ptr)
std::basic_string< char, std::char_traits< char >, std::allocator< char > > PUGIXML_FUNCTION as_utf8(const wchar_t *str)
const unsigned int parse_cdata
void *(* allocation_function)(size_t size)
const unsigned int parse_fragment
const unsigned int parse_full
const unsigned int parse_embed_pcdata
const unsigned int parse_wnorm_attribute
const unsigned int format_indent_attributes
const unsigned int parse_pi
@ status_append_invalid_root
@ status_end_element_mismatch
@ status_bad_start_element
@ status_unrecognized_tag
@ status_no_document_element
void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate)
deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function()
std::basic_string< wchar_t, std::char_traits< wchar_t >, std::allocator< wchar_t > > PUGIXML_FUNCTION as_wide(const char *str)
const unsigned int format_save_file_text
allocation_function PUGIXML_FUNCTION get_memory_allocation_function()
const unsigned int parse_escapes
const unsigned int format_write_bom
const unsigned int format_attribute_single_quote
const unsigned int format_indent
const unsigned int parse_eol
const unsigned int parse_default
const unsigned int parse_declaration
const unsigned int parse_comments
const unsigned int parse_ws_pcdata
const unsigned int parse_minimal
const unsigned int parse_ws_pcdata_single
const unsigned int format_no_escapes
const unsigned int parse_doctype
PUGI__FN void reverse(I begin, I end)
void remove_attribute(xml_attribute_struct *attr, xml_node_struct *node)
PUGI__FN void sort(I begin, I end, const Pred &pred)
void insert_attribute_before(xml_attribute_struct *attr, xml_attribute_struct *place, xml_node_struct *node)
void append_attribute(xml_attribute_struct *attr, xml_node_struct *node)
void prepend_attribute(xml_attribute_struct *attr, xml_node_struct *node)
void insert_attribute_after(xml_attribute_struct *attr, xml_attribute_struct *place, xml_node_struct *node)
#define PUGIXML_DEPRECATED
#define PUGIXML_NOEXCEPT_IF_NOT_COMPACT
constexpr int first(int i)
Implementation details for constexpr functions.
arr data(const arr &a, Ix... index)
bool operator==(const HashMe &lhs, const HashMe &rhs)
Annotation for function names.