Whitespace-only change: set noexpandtab & retab!
git-svn-id: http://pugixml.googlecode.com/svn/trunk@896 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
parent
cb1d83d32a
commit
7d18b33292
1770
src/pugixml.cpp
1770
src/pugixml.cpp
File diff suppressed because it is too large
Load Diff
414
src/pugixml.hpp
414
src/pugixml.hpp
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#ifndef PUGIXML_VERSION
|
#ifndef PUGIXML_VERSION
|
||||||
// Define version macro; evaluates to major * 100 + minor so that it's safe to use in less-than comparisons
|
// Define version macro; evaluates to major * 100 + minor so that it's safe to use in less-than comparisons
|
||||||
# define PUGIXML_VERSION 100
|
# define PUGIXML_VERSION 100
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Include user configuration file (this can define various configuration macros)
|
// Include user configuration file (this can define various configuration macros)
|
||||||
@ -32,9 +32,9 @@
|
|||||||
|
|
||||||
// Include STL headers
|
// Include STL headers
|
||||||
#ifndef PUGIXML_NO_STL
|
#ifndef PUGIXML_NO_STL
|
||||||
# include <iterator>
|
# include <iterator>
|
||||||
# include <iosfwd>
|
# include <iosfwd>
|
||||||
# include <string>
|
# include <string>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Macro for deprecated features
|
// Macro for deprecated features
|
||||||
@ -50,17 +50,17 @@
|
|||||||
|
|
||||||
// If no API is defined, assume default
|
// If no API is defined, assume default
|
||||||
#ifndef PUGIXML_API
|
#ifndef PUGIXML_API
|
||||||
# define PUGIXML_API
|
# define PUGIXML_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If no API for classes is defined, assume default
|
// If no API for classes is defined, assume default
|
||||||
#ifndef PUGIXML_CLASS
|
#ifndef PUGIXML_CLASS
|
||||||
# define PUGIXML_CLASS PUGIXML_API
|
# define PUGIXML_CLASS PUGIXML_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If no API for functions is defined, assume default
|
// If no API for functions is defined, assume default
|
||||||
#ifndef PUGIXML_FUNCTION
|
#ifndef PUGIXML_FUNCTION
|
||||||
# define PUGIXML_FUNCTION PUGIXML_API
|
# define PUGIXML_FUNCTION PUGIXML_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Character interface macros
|
// Character interface macros
|
||||||
@ -89,7 +89,7 @@ namespace pugi
|
|||||||
// Tree node types
|
// Tree node types
|
||||||
enum xml_node_type
|
enum xml_node_type
|
||||||
{
|
{
|
||||||
node_null, // Empty (null) node handle
|
node_null, // Empty (null) node handle
|
||||||
node_document, // A document tree's absolute root
|
node_document, // A document tree's absolute root
|
||||||
node_element, // Element tag, i.e. '<node/>'
|
node_element, // Element tag, i.e. '<node/>'
|
||||||
node_pcdata, // Plain character data, i.e. 'text'
|
node_pcdata, // Plain character data, i.e. 'text'
|
||||||
@ -97,13 +97,13 @@ namespace pugi
|
|||||||
node_comment, // Comment tag, i.e. '<!-- text -->'
|
node_comment, // Comment tag, i.e. '<!-- text -->'
|
||||||
node_pi, // Processing instruction, i.e. '<?name?>'
|
node_pi, // Processing instruction, i.e. '<?name?>'
|
||||||
node_declaration, // Document declaration, i.e. '<?xml version="1.0"?>'
|
node_declaration, // Document declaration, i.e. '<?xml version="1.0"?>'
|
||||||
node_doctype // Document type declaration, i.e. '<!DOCTYPE doc>'
|
node_doctype // Document type declaration, i.e. '<!DOCTYPE doc>'
|
||||||
};
|
};
|
||||||
|
|
||||||
// Parsing options
|
// Parsing options
|
||||||
|
|
||||||
// Minimal parsing mode (equivalent to turning all other flags off).
|
// Minimal parsing mode (equivalent to turning all other flags off).
|
||||||
// Only elements and PCDATA sections are added to the DOM tree, no text conversions are performed.
|
// Only elements and PCDATA sections are added to the DOM tree, no text conversions are performed.
|
||||||
const unsigned int parse_minimal = 0x0000;
|
const unsigned int parse_minimal = 0x0000;
|
||||||
|
|
||||||
// This flag determines if processing instructions (node_pi) are added to the DOM tree. This flag is off by default.
|
// This flag determines if processing instructions (node_pi) are added to the DOM tree. This flag is off by default.
|
||||||
@ -116,7 +116,7 @@ namespace pugi
|
|||||||
const unsigned int parse_cdata = 0x0004;
|
const unsigned int parse_cdata = 0x0004;
|
||||||
|
|
||||||
// This flag determines if plain character data (node_pcdata) that consist only of whitespace are added to the DOM tree.
|
// This flag determines if plain character data (node_pcdata) that consist only of whitespace are added to the DOM tree.
|
||||||
// This flag is off by default; turning it on usually results in slower parsing and more memory consumption.
|
// This flag is off by default; turning it on usually results in slower parsing and more memory consumption.
|
||||||
const unsigned int parse_ws_pcdata = 0x0008;
|
const unsigned int parse_ws_pcdata = 0x0008;
|
||||||
|
|
||||||
// This flag determines if character and entity references are expanded during parsing. This flag is on by default.
|
// This flag determines if character and entity references are expanded during parsing. This flag is on by default.
|
||||||
@ -125,46 +125,46 @@ namespace pugi
|
|||||||
// This flag determines if EOL characters are normalized (converted to #xA) during parsing. This flag is on by default.
|
// This flag determines if EOL characters are normalized (converted to #xA) during parsing. This flag is on by default.
|
||||||
const unsigned int parse_eol = 0x0020;
|
const unsigned int parse_eol = 0x0020;
|
||||||
|
|
||||||
// This flag determines if attribute values are normalized using CDATA normalization rules during parsing. This flag is on by default.
|
// This flag determines if attribute values are normalized using CDATA normalization rules during parsing. This flag is on by default.
|
||||||
const unsigned int parse_wconv_attribute = 0x0040;
|
const unsigned int parse_wconv_attribute = 0x0040;
|
||||||
|
|
||||||
// This flag determines if attribute values are normalized using NMTOKENS normalization rules during parsing. This flag is off by default.
|
// This flag determines if attribute values are normalized using NMTOKENS normalization rules during parsing. This flag is off by default.
|
||||||
const unsigned int parse_wnorm_attribute = 0x0080;
|
const unsigned int parse_wnorm_attribute = 0x0080;
|
||||||
|
|
||||||
// This flag determines if document declaration (node_declaration) is added to the DOM tree. This flag is off by default.
|
// This flag determines if document declaration (node_declaration) is added to the DOM tree. This flag is off by default.
|
||||||
const unsigned int parse_declaration = 0x0100;
|
const unsigned int parse_declaration = 0x0100;
|
||||||
|
|
||||||
// This flag determines if document type declaration (node_doctype) is added to the DOM tree. This flag is off by default.
|
// This flag determines if document type declaration (node_doctype) is added to the DOM tree. This flag is off by default.
|
||||||
const unsigned int parse_doctype = 0x0200;
|
const unsigned int parse_doctype = 0x0200;
|
||||||
|
|
||||||
// This flag determines if plain character data (node_pcdata) that is the only child of the parent node and that consists only
|
// This flag determines if plain character data (node_pcdata) that is the only child of the parent node and that consists only
|
||||||
// of whitespace is added to the DOM tree.
|
// of whitespace is added to the DOM tree.
|
||||||
// This flag is off by default; turning it on may result in slower parsing and more memory consumption.
|
// This flag is off by default; turning it on may result in slower parsing and more memory consumption.
|
||||||
const unsigned int parse_ws_pcdata_single = 0x0400;
|
const unsigned int parse_ws_pcdata_single = 0x0400;
|
||||||
|
|
||||||
// The default parsing mode.
|
// The default parsing mode.
|
||||||
// Elements, PCDATA and CDATA sections are added to the DOM tree, character/reference entities are expanded,
|
// Elements, PCDATA and CDATA sections are added to the DOM tree, character/reference entities are expanded,
|
||||||
// End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules.
|
// End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules.
|
||||||
const unsigned int parse_default = parse_cdata | parse_escapes | parse_wconv_attribute | parse_eol;
|
const unsigned int parse_default = parse_cdata | parse_escapes | parse_wconv_attribute | parse_eol;
|
||||||
|
|
||||||
// The full parsing mode.
|
// The full parsing mode.
|
||||||
// Nodes of all types are added to the DOM tree, character/reference entities are expanded,
|
// Nodes of all types are added to the DOM tree, character/reference entities are expanded,
|
||||||
// End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules.
|
// End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules.
|
||||||
const unsigned int parse_full = parse_default | parse_pi | parse_comments | parse_declaration | parse_doctype;
|
const unsigned int parse_full = parse_default | parse_pi | parse_comments | parse_declaration | parse_doctype;
|
||||||
|
|
||||||
// These flags determine the encoding of input data for XML document
|
// These flags determine the encoding of input data for XML document
|
||||||
enum xml_encoding
|
enum xml_encoding
|
||||||
{
|
{
|
||||||
encoding_auto, // Auto-detect input encoding using BOM or < / <? detection; use UTF8 if BOM is not found
|
encoding_auto, // Auto-detect input encoding using BOM or < / <? detection; use UTF8 if BOM is not found
|
||||||
encoding_utf8, // UTF8 encoding
|
encoding_utf8, // UTF8 encoding
|
||||||
encoding_utf16_le, // Little-endian UTF16
|
encoding_utf16_le, // Little-endian UTF16
|
||||||
encoding_utf16_be, // Big-endian UTF16
|
encoding_utf16_be, // Big-endian UTF16
|
||||||
encoding_utf16, // UTF16 with native endianness
|
encoding_utf16, // UTF16 with native endianness
|
||||||
encoding_utf32_le, // Little-endian UTF32
|
encoding_utf32_le, // Little-endian UTF32
|
||||||
encoding_utf32_be, // Big-endian UTF32
|
encoding_utf32_be, // Big-endian UTF32
|
||||||
encoding_utf32, // UTF32 with native endianness
|
encoding_utf32, // UTF32 with native endianness
|
||||||
encoding_wchar, // The same encoding wchar_t has (either UTF16 or UTF32)
|
encoding_wchar, // The same encoding wchar_t has (either UTF16 or UTF32)
|
||||||
encoding_latin1
|
encoding_latin1
|
||||||
};
|
};
|
||||||
|
|
||||||
// Formatting flags
|
// Formatting flags
|
||||||
@ -181,14 +181,14 @@ namespace pugi
|
|||||||
// Omit default XML declaration even if there is no declaration in the document. This flag is off by default.
|
// Omit default XML declaration even if there is no declaration in the document. This flag is off by default.
|
||||||
const unsigned int format_no_declaration = 0x08;
|
const unsigned int format_no_declaration = 0x08;
|
||||||
|
|
||||||
// Don't escape attribute values and PCDATA contents. This flag is off by default.
|
// Don't escape attribute values and PCDATA contents. This flag is off by default.
|
||||||
const unsigned int format_no_escapes = 0x10;
|
const unsigned int format_no_escapes = 0x10;
|
||||||
|
|
||||||
// Open file using text mode in xml_document::save_file. This enables special character (i.e. new-line) conversions on some systems. This flag is off by default.
|
// Open file using text mode in xml_document::save_file. This enables special character (i.e. new-line) conversions on some systems. This flag is off by default.
|
||||||
const unsigned int format_save_file_text = 0x20;
|
const unsigned int format_save_file_text = 0x20;
|
||||||
|
|
||||||
// The default set of formatting flags.
|
// The default set of formatting flags.
|
||||||
// Nodes are indented depending on their depth in DOM tree, a default declaration is output if document has none.
|
// Nodes are indented depending on their depth in DOM tree, a default declaration is output if document has none.
|
||||||
const unsigned int format_default = format_indent;
|
const unsigned int format_default = format_indent;
|
||||||
|
|
||||||
// Forward declarations
|
// Forward declarations
|
||||||
@ -197,13 +197,13 @@ namespace pugi
|
|||||||
|
|
||||||
class xml_node_iterator;
|
class xml_node_iterator;
|
||||||
class xml_attribute_iterator;
|
class xml_attribute_iterator;
|
||||||
class xml_named_node_iterator;
|
class xml_named_node_iterator;
|
||||||
|
|
||||||
class xml_tree_walker;
|
class xml_tree_walker;
|
||||||
|
|
||||||
class xml_node;
|
class xml_node;
|
||||||
|
|
||||||
class xml_text;
|
class xml_text;
|
||||||
|
|
||||||
#ifndef PUGIXML_NO_XPATH
|
#ifndef PUGIXML_NO_XPATH
|
||||||
class xpath_node;
|
class xpath_node;
|
||||||
@ -212,22 +212,22 @@ namespace pugi
|
|||||||
class xpath_variable_set;
|
class xpath_variable_set;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Range-based for loop support
|
// Range-based for loop support
|
||||||
template <typename It> class xml_object_range
|
template <typename It> class xml_object_range
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef It const_iterator;
|
typedef It const_iterator;
|
||||||
|
|
||||||
xml_object_range(It b, It e): _begin(b), _end(e)
|
xml_object_range(It b, It e): _begin(b), _end(e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
It begin() const { return _begin; }
|
It begin() const { return _begin; }
|
||||||
It end() const { return _end; }
|
It end() const { return _end; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
It _begin, _end;
|
It _begin, _end;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Writer interface for node printing (see xml_node::print)
|
// Writer interface for node printing (see xml_node::print)
|
||||||
class PUGIXML_CLASS xml_writer
|
class PUGIXML_CLASS xml_writer
|
||||||
@ -243,7 +243,7 @@ namespace pugi
|
|||||||
class PUGIXML_CLASS xml_writer_file: public xml_writer
|
class PUGIXML_CLASS xml_writer_file: public xml_writer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio
|
// Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio
|
||||||
xml_writer_file(void* file);
|
xml_writer_file(void* file);
|
||||||
|
|
||||||
virtual void write(const void* data, size_t size);
|
virtual void write(const void* data, size_t size);
|
||||||
@ -257,7 +257,7 @@ namespace pugi
|
|||||||
class PUGIXML_CLASS xml_writer_stream: public xml_writer
|
class PUGIXML_CLASS xml_writer_stream: public xml_writer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Construct writer from an output stream object
|
// Construct writer from an output stream object
|
||||||
xml_writer_stream(std::basic_ostream<char, std::char_traits<char> >& stream);
|
xml_writer_stream(std::basic_ostream<char, std::char_traits<char> >& stream);
|
||||||
xml_writer_stream(std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& stream);
|
xml_writer_stream(std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& stream);
|
||||||
|
|
||||||
@ -278,20 +278,20 @@ namespace pugi
|
|||||||
private:
|
private:
|
||||||
xml_attribute_struct* _attr;
|
xml_attribute_struct* _attr;
|
||||||
|
|
||||||
typedef void (*unspecified_bool_type)(xml_attribute***);
|
typedef void (*unspecified_bool_type)(xml_attribute***);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor. Constructs an empty attribute.
|
// Default constructor. Constructs an empty attribute.
|
||||||
xml_attribute();
|
xml_attribute();
|
||||||
|
|
||||||
// Constructs attribute from internal pointer
|
// Constructs attribute from internal pointer
|
||||||
explicit xml_attribute(xml_attribute_struct* attr);
|
explicit xml_attribute(xml_attribute_struct* attr);
|
||||||
|
|
||||||
// Safe bool conversion operator
|
// Safe bool conversion operator
|
||||||
operator unspecified_bool_type() const;
|
operator unspecified_bool_type() const;
|
||||||
|
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
bool operator!() const;
|
bool operator!() const;
|
||||||
|
|
||||||
// Comparison operators (compares wrapped attribute pointers)
|
// Comparison operators (compares wrapped attribute pointers)
|
||||||
bool operator==(const xml_attribute& r) const;
|
bool operator==(const xml_attribute& r) const;
|
||||||
@ -309,7 +309,7 @@ namespace pugi
|
|||||||
const char_t* value() const;
|
const char_t* value() const;
|
||||||
|
|
||||||
// Get attribute value, or the default value if attribute is empty
|
// Get attribute value, or the default value if attribute is empty
|
||||||
const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const;
|
const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const;
|
||||||
|
|
||||||
// Get attribute value as a number, or the default value if conversion did not succeed or attribute is empty
|
// Get attribute value as a number, or the default value if conversion did not succeed or attribute is empty
|
||||||
int as_int(int def = 0) const;
|
int as_int(int def = 0) const;
|
||||||
@ -317,14 +317,14 @@ namespace pugi
|
|||||||
double as_double(double def = 0) const;
|
double as_double(double def = 0) const;
|
||||||
float as_float(float def = 0) const;
|
float as_float(float def = 0) const;
|
||||||
|
|
||||||
// Get attribute value as bool (returns true if first character is in '1tTyY' set), or the default value if attribute is empty
|
// Get attribute value as bool (returns true if first character is in '1tTyY' set), or the default value if attribute is empty
|
||||||
bool as_bool(bool def = false) const;
|
bool as_bool(bool def = false) const;
|
||||||
|
|
||||||
// Set attribute name/value (returns false if attribute is empty or there is not enough memory)
|
// Set attribute name/value (returns false if attribute is empty or there is not enough memory)
|
||||||
bool set_name(const char_t* rhs);
|
bool set_name(const char_t* rhs);
|
||||||
bool set_value(const char_t* rhs);
|
bool set_value(const char_t* rhs);
|
||||||
|
|
||||||
// Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
// Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
||||||
bool set_value(int rhs);
|
bool set_value(int rhs);
|
||||||
bool set_value(unsigned int rhs);
|
bool set_value(unsigned int rhs);
|
||||||
bool set_value(double rhs);
|
bool set_value(double rhs);
|
||||||
@ -337,12 +337,12 @@ namespace pugi
|
|||||||
xml_attribute& operator=(double rhs);
|
xml_attribute& operator=(double rhs);
|
||||||
xml_attribute& operator=(bool rhs);
|
xml_attribute& operator=(bool rhs);
|
||||||
|
|
||||||
// Get next/previous attribute in the attribute list of the parent node
|
// Get next/previous attribute in the attribute list of the parent node
|
||||||
xml_attribute next_attribute() const;
|
xml_attribute next_attribute() const;
|
||||||
xml_attribute previous_attribute() const;
|
xml_attribute previous_attribute() const;
|
||||||
|
|
||||||
// Get hash value (unique for handles to the same object)
|
// Get hash value (unique for handles to the same object)
|
||||||
size_t hash_value() const;
|
size_t hash_value() const;
|
||||||
|
|
||||||
// Get internal pointer
|
// Get internal pointer
|
||||||
xml_attribute_struct* internal_object() const;
|
xml_attribute_struct* internal_object() const;
|
||||||
@ -363,16 +363,16 @@ namespace pugi
|
|||||||
protected:
|
protected:
|
||||||
xml_node_struct* _root;
|
xml_node_struct* _root;
|
||||||
|
|
||||||
typedef void (*unspecified_bool_type)(xml_node***);
|
typedef void (*unspecified_bool_type)(xml_node***);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor. Constructs an empty node.
|
// Default constructor. Constructs an empty node.
|
||||||
xml_node();
|
xml_node();
|
||||||
|
|
||||||
// Constructs node from internal pointer
|
// Constructs node from internal pointer
|
||||||
explicit xml_node(xml_node_struct* p);
|
explicit xml_node(xml_node_struct* p);
|
||||||
|
|
||||||
// Safe bool conversion operator
|
// Safe bool conversion operator
|
||||||
operator unspecified_bool_type() const;
|
operator unspecified_bool_type() const;
|
||||||
|
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
@ -398,24 +398,24 @@ namespace pugi
|
|||||||
|
|
||||||
// Get attribute list
|
// Get attribute list
|
||||||
xml_attribute first_attribute() const;
|
xml_attribute first_attribute() const;
|
||||||
xml_attribute last_attribute() const;
|
xml_attribute last_attribute() const;
|
||||||
|
|
||||||
// Get children list
|
// Get children list
|
||||||
xml_node first_child() const;
|
xml_node first_child() const;
|
||||||
xml_node last_child() const;
|
xml_node last_child() const;
|
||||||
|
|
||||||
// Get next/previous sibling in the children list of the parent node
|
// Get next/previous sibling in the children list of the parent node
|
||||||
xml_node next_sibling() const;
|
xml_node next_sibling() const;
|
||||||
xml_node previous_sibling() const;
|
xml_node previous_sibling() const;
|
||||||
|
|
||||||
// Get parent node
|
// Get parent node
|
||||||
xml_node parent() const;
|
xml_node parent() const;
|
||||||
|
|
||||||
// Get root of DOM tree this node belongs to
|
// Get root of DOM tree this node belongs to
|
||||||
xml_node root() const;
|
xml_node root() const;
|
||||||
|
|
||||||
// Get text object for the current node
|
// Get text object for the current node
|
||||||
xml_text text() const;
|
xml_text text() const;
|
||||||
|
|
||||||
// Get child, attribute or next/previous sibling with the specified name
|
// Get child, attribute or next/previous sibling with the specified name
|
||||||
xml_node child(const char_t* name) const;
|
xml_node child(const char_t* name) const;
|
||||||
@ -491,8 +491,8 @@ namespace pugi
|
|||||||
for (xml_node node = first_child(); node; node = node.next_sibling())
|
for (xml_node node = first_child(); node; node = node.next_sibling())
|
||||||
if (pred(node))
|
if (pred(node))
|
||||||
return node;
|
return node;
|
||||||
|
|
||||||
return xml_node();
|
return xml_node();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find node from subtree using predicate. Returns first node from subtree (depth-first), for which predicate returned true.
|
// Find node from subtree using predicate. Returns first node from subtree (depth-first), for which predicate returned true.
|
||||||
@ -565,16 +565,16 @@ namespace pugi
|
|||||||
attribute_iterator attributes_begin() const;
|
attribute_iterator attributes_begin() const;
|
||||||
attribute_iterator attributes_end() const;
|
attribute_iterator attributes_end() const;
|
||||||
|
|
||||||
// Range-based for support
|
// Range-based for support
|
||||||
xml_object_range<xml_node_iterator> children() const;
|
xml_object_range<xml_node_iterator> children() const;
|
||||||
xml_object_range<xml_named_node_iterator> children(const char_t* name) const;
|
xml_object_range<xml_named_node_iterator> children(const char_t* name) const;
|
||||||
xml_object_range<xml_attribute_iterator> attributes() const;
|
xml_object_range<xml_attribute_iterator> attributes() const;
|
||||||
|
|
||||||
// Get node offset in parsed file/string (in char_t units) for debugging purposes
|
// Get node offset in parsed file/string (in char_t units) for debugging purposes
|
||||||
ptrdiff_t offset_debug() const;
|
ptrdiff_t offset_debug() const;
|
||||||
|
|
||||||
// Get hash value (unique for handles to the same object)
|
// Get hash value (unique for handles to the same object)
|
||||||
size_t hash_value() const;
|
size_t hash_value() const;
|
||||||
|
|
||||||
// Get internal pointer
|
// Get internal pointer
|
||||||
xml_node_struct* internal_object() const;
|
xml_node_struct* internal_object() const;
|
||||||
@ -586,29 +586,29 @@ namespace pugi
|
|||||||
bool PUGIXML_FUNCTION operator||(const xml_node& lhs, bool rhs);
|
bool PUGIXML_FUNCTION operator||(const xml_node& lhs, bool rhs);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// A helper for working with text inside PCDATA nodes
|
// A helper for working with text inside PCDATA nodes
|
||||||
class PUGIXML_CLASS xml_text
|
class PUGIXML_CLASS xml_text
|
||||||
{
|
{
|
||||||
friend class xml_node;
|
friend class xml_node;
|
||||||
|
|
||||||
xml_node_struct* _root;
|
xml_node_struct* _root;
|
||||||
|
|
||||||
typedef void (*unspecified_bool_type)(xml_text***);
|
typedef void (*unspecified_bool_type)(xml_text***);
|
||||||
|
|
||||||
explicit xml_text(xml_node_struct* root);
|
explicit xml_text(xml_node_struct* root);
|
||||||
|
|
||||||
xml_node_struct* _data_new();
|
xml_node_struct* _data_new();
|
||||||
xml_node_struct* _data() const;
|
xml_node_struct* _data() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor. Constructs an empty object.
|
// Default constructor. Constructs an empty object.
|
||||||
xml_text();
|
xml_text();
|
||||||
|
|
||||||
// Safe bool conversion operator
|
// Safe bool conversion operator
|
||||||
operator unspecified_bool_type() const;
|
operator unspecified_bool_type() const;
|
||||||
|
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
bool operator!() const;
|
bool operator!() const;
|
||||||
|
|
||||||
// Check if text object is empty
|
// Check if text object is empty
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
@ -617,7 +617,7 @@ namespace pugi
|
|||||||
const char_t* get() const;
|
const char_t* get() const;
|
||||||
|
|
||||||
// Get text, or the default value if object is empty
|
// Get text, or the default value if object is empty
|
||||||
const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const;
|
const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const;
|
||||||
|
|
||||||
// Get text as a number, or the default value if conversion did not succeed or object is empty
|
// Get text as a number, or the default value if conversion did not succeed or object is empty
|
||||||
int as_int(int def = 0) const;
|
int as_int(int def = 0) const;
|
||||||
@ -625,13 +625,13 @@ namespace pugi
|
|||||||
double as_double(double def = 0) const;
|
double as_double(double def = 0) const;
|
||||||
float as_float(float def = 0) const;
|
float as_float(float def = 0) const;
|
||||||
|
|
||||||
// Get text as bool (returns true if first character is in '1tTyY' set), or the default value if object is empty
|
// Get text as bool (returns true if first character is in '1tTyY' set), or the default value if object is empty
|
||||||
bool as_bool(bool def = false) const;
|
bool as_bool(bool def = false) const;
|
||||||
|
|
||||||
// Set text (returns false if object is empty or there is not enough memory)
|
// Set text (returns false if object is empty or there is not enough memory)
|
||||||
bool set(const char_t* rhs);
|
bool set(const char_t* rhs);
|
||||||
|
|
||||||
// Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
// Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
|
||||||
bool set(int rhs);
|
bool set(int rhs);
|
||||||
bool set(unsigned int rhs);
|
bool set(unsigned int rhs);
|
||||||
bool set(double rhs);
|
bool set(double rhs);
|
||||||
@ -644,9 +644,9 @@ namespace pugi
|
|||||||
xml_text& operator=(double rhs);
|
xml_text& operator=(double rhs);
|
||||||
xml_text& operator=(bool rhs);
|
xml_text& operator=(bool rhs);
|
||||||
|
|
||||||
// Get the data node (node_pcdata or node_cdata) for this object
|
// Get the data node (node_pcdata or node_cdata) for this object
|
||||||
xml_node data() const;
|
xml_node data() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __BORLANDC__
|
#ifdef __BORLANDC__
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
@ -676,13 +676,13 @@ namespace pugi
|
|||||||
typedef std::bidirectional_iterator_tag iterator_category;
|
typedef std::bidirectional_iterator_tag iterator_category;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Default constructor
|
// Default constructor
|
||||||
xml_node_iterator();
|
xml_node_iterator();
|
||||||
|
|
||||||
// Construct an iterator which points to the specified node
|
// Construct an iterator which points to the specified node
|
||||||
xml_node_iterator(const xml_node& node);
|
xml_node_iterator(const xml_node& node);
|
||||||
|
|
||||||
// Iterator operators
|
// Iterator operators
|
||||||
bool operator==(const xml_node_iterator& rhs) const;
|
bool operator==(const xml_node_iterator& rhs) const;
|
||||||
bool operator!=(const xml_node_iterator& rhs) const;
|
bool operator!=(const xml_node_iterator& rhs) const;
|
||||||
|
|
||||||
@ -718,10 +718,10 @@ namespace pugi
|
|||||||
typedef std::bidirectional_iterator_tag iterator_category;
|
typedef std::bidirectional_iterator_tag iterator_category;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Default constructor
|
// Default constructor
|
||||||
xml_attribute_iterator();
|
xml_attribute_iterator();
|
||||||
|
|
||||||
// Construct an iterator which points to the specified attribute
|
// Construct an iterator which points to the specified attribute
|
||||||
xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent);
|
xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent);
|
||||||
|
|
||||||
// Iterator operators
|
// Iterator operators
|
||||||
@ -738,40 +738,40 @@ namespace pugi
|
|||||||
xml_attribute_iterator operator--(int);
|
xml_attribute_iterator operator--(int);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Named node range helper
|
// Named node range helper
|
||||||
class xml_named_node_iterator
|
class xml_named_node_iterator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Iterator traits
|
// Iterator traits
|
||||||
typedef ptrdiff_t difference_type;
|
typedef ptrdiff_t difference_type;
|
||||||
typedef xml_node value_type;
|
typedef xml_node value_type;
|
||||||
typedef xml_node* pointer;
|
typedef xml_node* pointer;
|
||||||
typedef xml_node& reference;
|
typedef xml_node& reference;
|
||||||
|
|
||||||
#ifndef PUGIXML_NO_STL
|
#ifndef PUGIXML_NO_STL
|
||||||
typedef std::forward_iterator_tag iterator_category;
|
typedef std::forward_iterator_tag iterator_category;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Default constructor
|
// Default constructor
|
||||||
xml_named_node_iterator();
|
xml_named_node_iterator();
|
||||||
|
|
||||||
// Construct an iterator which points to the specified node
|
// Construct an iterator which points to the specified node
|
||||||
xml_named_node_iterator(const xml_node& node, const char_t* name);
|
xml_named_node_iterator(const xml_node& node, const char_t* name);
|
||||||
|
|
||||||
// Iterator operators
|
// Iterator operators
|
||||||
bool operator==(const xml_named_node_iterator& rhs) const;
|
bool operator==(const xml_named_node_iterator& rhs) const;
|
||||||
bool operator!=(const xml_named_node_iterator& rhs) const;
|
bool operator!=(const xml_named_node_iterator& rhs) const;
|
||||||
|
|
||||||
xml_node& operator*() const;
|
xml_node& operator*() const;
|
||||||
xml_node* operator->() const;
|
xml_node* operator->() const;
|
||||||
|
|
||||||
const xml_named_node_iterator& operator++();
|
const xml_named_node_iterator& operator++();
|
||||||
xml_named_node_iterator operator++(int);
|
xml_named_node_iterator operator++(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable xml_node _node;
|
mutable xml_node _node;
|
||||||
const char_t* _name;
|
const char_t* _name;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Abstract tree walker class (see xml_node::traverse)
|
// Abstract tree walker class (see xml_node::traverse)
|
||||||
class PUGIXML_CLASS xml_tree_walker
|
class PUGIXML_CLASS xml_tree_walker
|
||||||
@ -802,23 +802,23 @@ namespace pugi
|
|||||||
// Parsing status, returned as part of xml_parse_result object
|
// Parsing status, returned as part of xml_parse_result object
|
||||||
enum xml_parse_status
|
enum xml_parse_status
|
||||||
{
|
{
|
||||||
status_ok = 0, // No error
|
status_ok = 0, // No error
|
||||||
|
|
||||||
status_file_not_found, // File was not found during load_file()
|
status_file_not_found, // File was not found during load_file()
|
||||||
status_io_error, // Error reading from file/stream
|
status_io_error, // Error reading from file/stream
|
||||||
status_out_of_memory, // Could not allocate memory
|
status_out_of_memory, // Could not allocate memory
|
||||||
status_internal_error, // Internal error occurred
|
status_internal_error, // Internal error occurred
|
||||||
|
|
||||||
status_unrecognized_tag, // Parser could not determine tag type
|
status_unrecognized_tag, // Parser could not determine tag type
|
||||||
|
|
||||||
status_bad_pi, // Parsing error occurred while parsing document declaration/processing instruction
|
status_bad_pi, // Parsing error occurred while parsing document declaration/processing instruction
|
||||||
status_bad_comment, // Parsing error occurred while parsing comment
|
status_bad_comment, // Parsing error occurred while parsing comment
|
||||||
status_bad_cdata, // Parsing error occurred while parsing CDATA section
|
status_bad_cdata, // Parsing error occurred while parsing CDATA section
|
||||||
status_bad_doctype, // Parsing error occurred while parsing document type declaration
|
status_bad_doctype, // Parsing error occurred while parsing document type declaration
|
||||||
status_bad_pcdata, // Parsing error occurred while parsing PCDATA section
|
status_bad_pcdata, // Parsing error occurred while parsing PCDATA section
|
||||||
status_bad_start_element, // Parsing error occurred while parsing start element tag
|
status_bad_start_element, // Parsing error occurred while parsing start element tag
|
||||||
status_bad_attribute, // Parsing error occurred while parsing element attribute
|
status_bad_attribute, // Parsing error occurred while parsing element attribute
|
||||||
status_bad_end_element, // Parsing error occurred while parsing end element tag
|
status_bad_end_element, // Parsing error occurred while parsing end element tag
|
||||||
status_end_element_mismatch // There was a mismatch of start-end tags (closing tag had incorrect name, some tag was not closed or there was an excessive closing tag)
|
status_end_element_mismatch // There was a mismatch of start-end tags (closing tag had incorrect name, some tag was not closed or there was an excessive closing tag)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -834,7 +834,7 @@ namespace pugi
|
|||||||
// Source document encoding
|
// Source document encoding
|
||||||
xml_encoding encoding;
|
xml_encoding encoding;
|
||||||
|
|
||||||
// Default constructor, initializes object to failed state
|
// Default constructor, initializes object to failed state
|
||||||
xml_parse_result();
|
xml_parse_result();
|
||||||
|
|
||||||
// Cast to bool operator
|
// Cast to bool operator
|
||||||
@ -868,10 +868,10 @@ namespace pugi
|
|||||||
// Destructor, invalidates all node/attribute handles to this document
|
// Destructor, invalidates all node/attribute handles to this document
|
||||||
~xml_document();
|
~xml_document();
|
||||||
|
|
||||||
// Removes all nodes, leaving the empty document
|
// Removes all nodes, leaving the empty document
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
// Removes all nodes, then copies the entire contents of the specified document
|
// Removes all nodes, then copies the entire contents of the specified document
|
||||||
void reset(const xml_document& proto);
|
void reset(const xml_document& proto);
|
||||||
|
|
||||||
#ifndef PUGIXML_NO_STL
|
#ifndef PUGIXML_NO_STL
|
||||||
@ -891,11 +891,11 @@ namespace pugi
|
|||||||
xml_parse_result load_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
xml_parse_result load_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
||||||
|
|
||||||
// Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data).
|
// Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data).
|
||||||
// You should ensure that buffer data will persist throughout the document's lifetime, and free the buffer memory manually once document is destroyed.
|
// You should ensure that buffer data will persist throughout the document's lifetime, and free the buffer memory manually once document is destroyed.
|
||||||
xml_parse_result load_buffer_inplace(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
xml_parse_result load_buffer_inplace(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
||||||
|
|
||||||
// Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data).
|
// Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data).
|
||||||
// You should allocate the buffer with pugixml allocation function; document will free the buffer when it is no longer needed (you can't use it anymore).
|
// You should allocate the buffer with pugixml allocation function; document will free the buffer when it is no longer needed (you can't use it anymore).
|
||||||
xml_parse_result load_buffer_inplace_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
xml_parse_result load_buffer_inplace_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
|
||||||
|
|
||||||
// Save XML document to writer (semantics is slightly different from xml_node::print, see documentation for details).
|
// Save XML document to writer (semantics is slightly different from xml_node::print, see documentation for details).
|
||||||
@ -911,22 +911,22 @@ namespace pugi
|
|||||||
bool save_file(const char* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
|
bool save_file(const char* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
|
||||||
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;
|
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;
|
||||||
|
|
||||||
// Get document element
|
// Get document element
|
||||||
xml_node document_element() const;
|
xml_node document_element() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef PUGIXML_NO_XPATH
|
#ifndef PUGIXML_NO_XPATH
|
||||||
// XPath query return type
|
// XPath query return type
|
||||||
enum xpath_value_type
|
enum xpath_value_type
|
||||||
{
|
{
|
||||||
xpath_type_none, // Unknown type (query failed to compile)
|
xpath_type_none, // Unknown type (query failed to compile)
|
||||||
xpath_type_node_set, // Node set (xpath_node_set)
|
xpath_type_node_set, // Node set (xpath_node_set)
|
||||||
xpath_type_number, // Number
|
xpath_type_number, // Number
|
||||||
xpath_type_string, // String
|
xpath_type_string, // String
|
||||||
xpath_type_boolean // Boolean
|
xpath_type_boolean // Boolean
|
||||||
};
|
};
|
||||||
|
|
||||||
// XPath parsing result
|
// XPath parsing result
|
||||||
struct PUGIXML_CLASS xpath_parse_result
|
struct PUGIXML_CLASS xpath_parse_result
|
||||||
{
|
{
|
||||||
// Error message (0 if no error)
|
// Error message (0 if no error)
|
||||||
@ -935,7 +935,7 @@ namespace pugi
|
|||||||
// Last parsed offset (in char_t units from string start)
|
// Last parsed offset (in char_t units from string start)
|
||||||
ptrdiff_t offset;
|
ptrdiff_t offset;
|
||||||
|
|
||||||
// Default constructor, initializes object to failed state
|
// Default constructor, initializes object to failed state
|
||||||
xpath_parse_result();
|
xpath_parse_result();
|
||||||
|
|
||||||
// Cast to bool operator
|
// Cast to bool operator
|
||||||
@ -961,19 +961,19 @@ namespace pugi
|
|||||||
xpath_variable& operator=(const xpath_variable&);
|
xpath_variable& operator=(const xpath_variable&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Get variable name
|
// Get variable name
|
||||||
const char_t* name() const;
|
const char_t* name() const;
|
||||||
|
|
||||||
// Get variable type
|
// Get variable type
|
||||||
xpath_value_type type() const;
|
xpath_value_type type() const;
|
||||||
|
|
||||||
// Get variable value; no type conversion is performed, default value (false, NaN, empty string, empty node set) is returned on type mismatch error
|
// Get variable value; no type conversion is performed, default value (false, NaN, empty string, empty node set) is returned on type mismatch error
|
||||||
bool get_boolean() const;
|
bool get_boolean() const;
|
||||||
double get_number() const;
|
double get_number() const;
|
||||||
const char_t* get_string() const;
|
const char_t* get_string() const;
|
||||||
const xpath_node_set& get_node_set() const;
|
const xpath_node_set& get_node_set() const;
|
||||||
|
|
||||||
// Set variable value; no type conversion is performed, false is returned on type mismatch error
|
// Set variable value; no type conversion is performed, false is returned on type mismatch error
|
||||||
bool set(bool value);
|
bool set(bool value);
|
||||||
bool set(double value);
|
bool set(double value);
|
||||||
bool set(const char_t* value);
|
bool set(const char_t* value);
|
||||||
@ -993,20 +993,20 @@ namespace pugi
|
|||||||
xpath_variable* find(const char_t* name) const;
|
xpath_variable* find(const char_t* name) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor/destructor
|
// Default constructor/destructor
|
||||||
xpath_variable_set();
|
xpath_variable_set();
|
||||||
~xpath_variable_set();
|
~xpath_variable_set();
|
||||||
|
|
||||||
// Add a new variable or get the existing one, if the types match
|
// Add a new variable or get the existing one, if the types match
|
||||||
xpath_variable* add(const char_t* name, xpath_value_type type);
|
xpath_variable* add(const char_t* name, xpath_value_type type);
|
||||||
|
|
||||||
// Set value of an existing variable; no type conversion is performed, false is returned if there is no such variable or if types mismatch
|
// Set value of an existing variable; no type conversion is performed, false is returned if there is no such variable or if types mismatch
|
||||||
bool set(const char_t* name, bool value);
|
bool set(const char_t* name, bool value);
|
||||||
bool set(const char_t* name, double value);
|
bool set(const char_t* name, double value);
|
||||||
bool set(const char_t* name, const char_t* value);
|
bool set(const char_t* name, const char_t* value);
|
||||||
bool set(const char_t* name, const xpath_node_set& value);
|
bool set(const char_t* name, const xpath_node_set& value);
|
||||||
|
|
||||||
// Get existing variable by name
|
// Get existing variable by name
|
||||||
xpath_variable* get(const char_t* name);
|
xpath_variable* get(const char_t* name);
|
||||||
const xpath_variable* get(const char_t* name) const;
|
const xpath_variable* get(const char_t* name) const;
|
||||||
};
|
};
|
||||||
@ -1018,15 +1018,15 @@ namespace pugi
|
|||||||
void* _impl;
|
void* _impl;
|
||||||
xpath_parse_result _result;
|
xpath_parse_result _result;
|
||||||
|
|
||||||
typedef void (*unspecified_bool_type)(xpath_query***);
|
typedef void (*unspecified_bool_type)(xpath_query***);
|
||||||
|
|
||||||
// Non-copyable semantics
|
// Non-copyable semantics
|
||||||
xpath_query(const xpath_query&);
|
xpath_query(const xpath_query&);
|
||||||
xpath_query& operator=(const xpath_query&);
|
xpath_query& operator=(const xpath_query&);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Construct a compiled object from XPath expression.
|
// Construct a compiled object from XPath expression.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on compilation errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on compilation errors.
|
||||||
explicit xpath_query(const char_t* query, xpath_variable_set* variables = 0);
|
explicit xpath_query(const char_t* query, xpath_variable_set* variables = 0);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@ -1036,28 +1036,28 @@ namespace pugi
|
|||||||
xpath_value_type return_type() const;
|
xpath_value_type return_type() const;
|
||||||
|
|
||||||
// Evaluate expression as boolean value in the specified context; performs type conversion if necessary.
|
// Evaluate expression as boolean value in the specified context; performs type conversion if necessary.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
||||||
bool evaluate_boolean(const xpath_node& n) const;
|
bool evaluate_boolean(const xpath_node& n) const;
|
||||||
|
|
||||||
// Evaluate expression as double value in the specified context; performs type conversion if necessary.
|
// Evaluate expression as double value in the specified context; performs type conversion if necessary.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
||||||
double evaluate_number(const xpath_node& n) const;
|
double evaluate_number(const xpath_node& n) const;
|
||||||
|
|
||||||
#ifndef PUGIXML_NO_STL
|
#ifndef PUGIXML_NO_STL
|
||||||
// Evaluate expression as string value in the specified context; performs type conversion if necessary.
|
// Evaluate expression as string value in the specified context; performs type conversion if necessary.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
||||||
string_t evaluate_string(const xpath_node& n) const;
|
string_t evaluate_string(const xpath_node& n) const;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Evaluate expression as string value in the specified context; performs type conversion if necessary.
|
// Evaluate expression as string value in the specified context; performs type conversion if necessary.
|
||||||
// At most capacity characters are written to the destination buffer, full result size is returned (includes terminating zero).
|
// At most capacity characters are written to the destination buffer, full result size is returned (includes terminating zero).
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is defined, returns empty set instead.
|
// If PUGIXML_NO_EXCEPTIONS is defined, returns empty set instead.
|
||||||
size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const;
|
size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const;
|
||||||
|
|
||||||
// Evaluate expression as node set in the specified context.
|
// Evaluate expression as node set in the specified context.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors.
|
// If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors.
|
||||||
// If PUGIXML_NO_EXCEPTIONS is defined, returns empty node set instead.
|
// If PUGIXML_NO_EXCEPTIONS is defined, returns empty node set instead.
|
||||||
xpath_node_set evaluate_node_set(const xpath_node& n) const;
|
xpath_node_set evaluate_node_set(const xpath_node& n) const;
|
||||||
|
|
||||||
// Get parsing result (used to get compilation errors in PUGIXML_NO_EXCEPTIONS mode)
|
// Get parsing result (used to get compilation errors in PUGIXML_NO_EXCEPTIONS mode)
|
||||||
@ -1066,7 +1066,7 @@ namespace pugi
|
|||||||
// Safe bool conversion operator
|
// Safe bool conversion operator
|
||||||
operator unspecified_bool_type() const;
|
operator unspecified_bool_type() const;
|
||||||
|
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
bool operator!() const;
|
bool operator!() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1084,7 +1084,7 @@ namespace pugi
|
|||||||
// Get error message
|
// Get error message
|
||||||
virtual const char* what() const throw();
|
virtual const char* what() const throw();
|
||||||
|
|
||||||
// Get parse result
|
// Get parse result
|
||||||
const xpath_parse_result& result() const;
|
const xpath_parse_result& result() const;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@ -1096,7 +1096,7 @@ namespace pugi
|
|||||||
xml_node _node;
|
xml_node _node;
|
||||||
xml_attribute _attribute;
|
xml_attribute _attribute;
|
||||||
|
|
||||||
typedef void (*unspecified_bool_type)(xpath_node***);
|
typedef void (*unspecified_bool_type)(xpath_node***);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor; constructs empty XPath node
|
// Default constructor; constructs empty XPath node
|
||||||
@ -1113,11 +1113,11 @@ namespace pugi
|
|||||||
// Get parent of contained node/attribute
|
// Get parent of contained node/attribute
|
||||||
xml_node parent() const;
|
xml_node parent() const;
|
||||||
|
|
||||||
// Safe bool conversion operator
|
// Safe bool conversion operator
|
||||||
operator unspecified_bool_type() const;
|
operator unspecified_bool_type() const;
|
||||||
|
|
||||||
// Borland C++ workaround
|
// Borland C++ workaround
|
||||||
bool operator!() const;
|
bool operator!() const;
|
||||||
|
|
||||||
// Comparison operators
|
// Comparison operators
|
||||||
bool operator==(const xpath_node& n) const;
|
bool operator==(const xpath_node& n) const;
|
||||||
@ -1164,7 +1164,7 @@ namespace pugi
|
|||||||
// Get collection size
|
// Get collection size
|
||||||
size_t size() const;
|
size_t size() const;
|
||||||
|
|
||||||
// Indexing operator
|
// Indexing operator
|
||||||
const xpath_node& operator[](size_t index) const;
|
const xpath_node& operator[](size_t index) const;
|
||||||
|
|
||||||
// Collection iterators
|
// Collection iterators
|
||||||
@ -1179,7 +1179,7 @@ namespace pugi
|
|||||||
|
|
||||||
// Check if collection is empty
|
// Check if collection is empty
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
type_t _type;
|
type_t _type;
|
||||||
|
|
||||||
@ -1206,14 +1206,14 @@ namespace pugi
|
|||||||
typedef void* (*allocation_function)(size_t size);
|
typedef void* (*allocation_function)(size_t size);
|
||||||
|
|
||||||
// Memory deallocation function interface
|
// Memory deallocation function interface
|
||||||
typedef void (*deallocation_function)(void* ptr);
|
typedef void (*deallocation_function)(void* ptr);
|
||||||
|
|
||||||
// Override default memory management functions. All subsequent allocations/deallocations will be performed via supplied functions.
|
// Override default memory management functions. All subsequent allocations/deallocations will be performed via supplied functions.
|
||||||
void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate);
|
void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate);
|
||||||
|
|
||||||
// Get current memory management functions
|
// Get current memory management functions
|
||||||
allocation_function PUGIXML_FUNCTION get_memory_allocation_function();
|
allocation_function PUGIXML_FUNCTION get_memory_allocation_function();
|
||||||
deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function();
|
deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC))
|
#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user