10. API リファレンス
これは、pugixml のすべてのマクロ、型、列挙型、クラス、関数をまとめたリファレンスです。各シンボルは、マニュアルの該当する節へのリンクになっています。
10.1. マクロ
#define PUGIXML_WCHAR_MODE
#define PUGIXML_COMPACT
#define PUGIXML_NO_XPATH
#define PUGIXML_NO_STL
#define PUGIXML_NO_EXCEPTIONS
#define PUGIXML_API
#define PUGIXML_CLASS
#define PUGIXML_FUNCTION
#define PUGIXML_MEMORY_PAGE_SIZE
#define PUGIXML_MEMORY_OUTPUT_STACK
#define PUGIXML_MEMORY_XPATH_PAGE_SIZE
#define PUGIXML_HEADER_ONLY
#define PUGIXML_HAS_LONG_LONG
#define PUGIXML_HAS_STRING_VIEW
10.2. 型
typedef configuration-defined-type char_t;
typedef configuration-defined-type string_t;
typedef configuration-defined-type string_view_t;
typedef void* (*allocation_function)(size_t size);
typedef void (*deallocation_function)(void* ptr);
10.3. 列挙型
enum xml_node_type
node_null
node_document
node_element
node_pcdata
node_cdata
node_comment
node_pi
node_declaration
node_doctype
enum xml_parse_status
status_ok
status_file_not_found
status_io_error
status_out_of_memory
status_internal_error
status_unrecognized_tag
status_bad_pi
status_bad_comment
status_bad_cdata
status_bad_doctype
status_bad_pcdata
status_bad_start_element
status_bad_attribute
status_bad_end_element
status_end_element_mismatch
status_append_invalid_root
status_no_document_element
enum xml_encoding
encoding_auto
encoding_utf8
encoding_utf16_le
encoding_utf16_be
encoding_utf16
encoding_utf32_le
encoding_utf32_be
encoding_utf32
encoding_wchar
encoding_latin1
enum xpath_value_type
xpath_type_none
xpath_type_node_set
xpath_type_number
xpath_type_string
xpath_type_boolean
10.4. 定数
// Formatting options bit flags:
const unsigned int format_attribute_single_quote
const unsigned int format_default
const unsigned int format_indent
const unsigned int format_indent_attributes
const unsigned int format_no_declaration
const unsigned int format_no_empty_element_tags
const unsigned int format_no_escapes
const unsigned int format_raw
const unsigned int format_save_file_text
const unsigned int format_skip_control_chars
const unsigned int format_write_bom
// Parsing options bit flags:
const unsigned int parse_cdata
const unsigned int parse_comments
const unsigned int parse_declaration
const unsigned int parse_default
const unsigned int parse_doctype
const unsigned int parse_eol
const unsigned int parse_escapes
const unsigned int parse_fragment
const unsigned int parse_full
const unsigned int parse_minimal
const unsigned int parse_pi
const unsigned int parse_trim_pcdata
const unsigned int parse_ws_pcdata
const unsigned int parse_ws_pcdata_single
const unsigned int parse_embed_pcdata
const unsigned int parse_merge_pcdata
const unsigned int parse_wconv_attribute
const unsigned int parse_wnorm_attribute
10.5. クラス
class xml_attribute
xml_attribute();
bool empty() const;
operator unspecified_bool_type() const;
bool operator==(const xml_attribute& r) const;
bool operator!=(const xml_attribute& r) const;
bool operator<(const xml_attribute& r) const;
bool operator>(const xml_attribute& r) const;
bool operator<=(const xml_attribute& r) const;
bool operator>=(const xml_attribute& r) const;
size_t hash_value() const;
xml_attribute next_attribute() const;
xml_attribute previous_attribute() const;
const char_t* name() const;
const char_t* value() const;
const char_t* as_string(const char_t* def = "") const;
int as_int(int def = 0) const;
unsigned int as_uint(unsigned int def = 0) const;
double as_double(double def = 0) const;
float as_float(float def = 0) const;
bool as_bool(bool def = false) const;
long long as_llong(long long def = 0) const;
unsigned long long as_ullong(unsigned long long def = 0) const;
bool set_name(const char_t* rhs);
bool set_name(const char_t* rhs, size_t size);
bool set_name(string_view_t rhs);
bool set_value(const char_t* rhs);
bool set_value(const char_t* rhs, size_t size);
bool set_value(string_view_t rhs);
bool set_value(int rhs);
bool set_value(unsigned int rhs);
bool set_value(long rhs);
bool set_value(unsigned long rhs);
bool set_value(double rhs);
bool set_value(double rhs, int precision);
bool set_value(float rhs);
bool set_value(float rhs, int precision);
bool set_value(bool rhs);
bool set_value(long long rhs);
bool set_value(unsigned long long rhs);
xml_attribute& operator=(const char_t* rhs);
xml_attribute& operator=(string_view_t rhs);
xml_attribute& operator=(int rhs);
xml_attribute& operator=(unsigned int rhs);
xml_attribute& operator=(long rhs);
xml_attribute& operator=(unsigned long rhs);
xml_attribute& operator=(double rhs);
xml_attribute& operator=(float rhs);
xml_attribute& operator=(bool rhs);
xml_attribute& operator=(long long rhs);
xml_attribute& operator=(unsigned long long rhs);
class xml_node
xml_node();
bool empty() const;
operator unspecified_bool_type() const;
bool operator==(const xml_node& r) const;
bool operator!=(const xml_node& r) const;
bool operator<(const xml_node& r) const;
bool operator>(const xml_node& r) const;
bool operator<=(const xml_node& r) const;
bool operator>=(const xml_node& r) const;
size_t hash_value() const;
xml_node_type type() const;
const char_t* name() const;
const char_t* value() const;
xml_node parent() const;
xml_node first_child() const;
xml_node last_child() const;
xml_node next_sibling() const;
xml_node previous_sibling() const;
xml_attribute first_attribute() const;
xml_attribute last_attribute() const;
implementation-defined-type children() const;
implementation-defined-type children(const char_t* name) const;
implementation-defined-type attributes() const;
xml_node child(const char_t* name) const;
xml_node child(string_view_t name) const;
xml_attribute attribute(const char_t* name) const;
xml_attribute attribute(string_view_t name) const;
xml_node next_sibling(const char_t* name) const;
xml_node next_sibling(string_view_t name) const;
xml_node previous_sibling(const char_t* name) const;
xml_node previous_sibling(string_view_t name) const;
xml_attribute attribute(const char_t* name, xml_attribute& hint) const;
xml_attribute attribute(string_view_t name, xml_attribute& hint) const;
xml_node find_child_by_attribute(const char_t* name, const char_t* attr_name, const char_t* attr_value) const;
xml_node find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const;
const char_t* child_value() const;
const char_t* child_value(const char_t* name) const;
xml_text text() const;
typedef xml_node_iterator iterator;
iterator begin() const;
iterator end() const;
typedef xml_attribute_iterator attribute_iterator;
attribute_iterator attributes_begin() const;
attribute_iterator attributes_end() const;
bool traverse(xml_tree_walker& walker);
template <typename Predicate> xml_attribute find_attribute(Predicate pred) const;
template <typename Predicate> xml_node find_child(Predicate pred) const;
template <typename Predicate> xml_node find_node(Predicate pred) const;
string_t path(char_t delimiter = '/') const;
xml_node first_element_by_path(const char_t* path, char_t delimiter = '/') const;
xml_node root() const;
ptrdiff_t offset_debug() const;
bool set_name(const char_t* rhs);
bool set_name(const char_t* rhs, size_t size);
bool set_name(string_view_t rhs);
bool set_value(const char_t* rhs);
bool set_value(const char_t* rhs, size_t size);
bool set_value(string_view_t rhs);
xml_attribute append_attribute(const char_t* name);
xml_attribute append_attribute(string_view_t name);
xml_attribute prepend_attribute(const char_t* name);
xml_attribute prepend_attribute(string_view_t name);
xml_attribute insert_attribute_after(const char_t* name, const xml_attribute& attr);
xml_attribute insert_attribute_after(string_view_t name, const xml_attribute& attr);
xml_attribute insert_attribute_before(const char_t* name, const xml_attribute& attr);
xml_attribute insert_attribute_before(string_view_t name, const xml_attribute& attr);
xml_node append_child(xml_node_type type = node_element);
xml_node prepend_child(xml_node_type type = node_element);
xml_node insert_child_after(xml_node_type type, const xml_node& node);
xml_node insert_child_before(xml_node_type type, const xml_node& node);
xml_node append_child(const char_t* name);
xml_node append_child(string_view_t name);
xml_node prepend_child(const char_t* name);
xml_node prepend_child(string_view_t name);
xml_node insert_child_after(const char_t* name, const xml_node& node);
xml_node insert_child_after(string_view_t name, const xml_node& node);
xml_node insert_child_before(const char_t* name, const xml_node& node);
xml_node insert_child_before(string_view_t name, const xml_node& node);
xml_attribute ensure_attribute(const char_t* name);
xml_attribute ensure_attribute(string_view_t name);
xml_node ensure_child(const char_t* name);
xml_node ensure_child(string_view_t name);
xml_attribute append_copy(const xml_attribute& proto);
xml_attribute prepend_copy(const xml_attribute& proto);
xml_attribute insert_copy_after(const xml_attribute& proto, const xml_attribute& attr);
xml_attribute insert_copy_before(const xml_attribute& proto, const xml_attribute& attr);
xml_node append_copy(const xml_node& proto);
xml_node prepend_copy(const xml_node& proto);
xml_node insert_copy_after(const xml_node& proto, const xml_node& node);
xml_node insert_copy_before(const xml_node& proto, const xml_node& node);
xml_node append_move(const xml_node& moved);
xml_node prepend_move(const xml_node& moved);
xml_node insert_move_after(const xml_node& moved, const xml_node& node);
xml_node insert_move_before(const xml_node& moved, const xml_node& node);
bool remove_attribute(const xml_attribute& a);
bool remove_attribute(const char_t* name);
bool remove_attribute(string_view_t name);
bool remove_attributes();
bool remove_child(const xml_node& n);
bool remove_child(const char_t* name);
bool remove_child(string_view_t name);
bool remove_children();
xml_parse_result append_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
void print(xml_writer& writer, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const;
void print(std::ostream& os, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const;
void print(std::wostream& os, const char_t* indent = "\t", unsigned int flags = format_default, unsigned int depth = 0) const;
xpath_node select_node(const char_t* query, xpath_variable_set* variables = 0) const;
xpath_node select_node(const xpath_query& query) const;
xpath_node_set select_nodes(const char_t* query, xpath_variable_set* variables = 0) const;
xpath_node_set select_nodes(const xpath_query& query) const;
class xml_document
xml_document();
~xml_document();
void reset();
void reset(const xml_document& proto);
xml_parse_result load(std::istream& stream, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
xml_parse_result load(std::wistream& stream, unsigned int options = parse_default);
xml_parse_result load_string(const char_t* contents, unsigned int options = parse_default);
xml_parse_result load_file(const char* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
xml_parse_result load_file(const wchar_t* path, 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);
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_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto);
bool save_file(const char* path, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
bool save_file(const wchar_t* path, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
void save(std::ostream& stream, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
void save(std::wostream& stream, const char_t* indent = "\t", unsigned int flags = format_default) const;
void save(xml_writer& writer, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
xml_node document_element() const;
struct xml_parse_result
xml_parse_status status;
ptrdiff_t offset;
xml_encoding encoding;
operator bool() const;
const char* description() const;
class xml_node_iterator
class xml_attribute_iterator
class xml_tree_walker
virtual bool begin(xml_node& node);
virtual bool for_each(xml_node& node) = 0;
virtual bool end(xml_node& node);
int depth() const;
class xml_text
bool empty() const;
operator unspecified_bool_type() const;
const char_t* get() const;
const char_t* as_string(const char_t* def = "") const;
int as_int(int def = 0) const;
unsigned int as_uint(unsigned int def = 0) const;
double as_double(double def = 0) const;
float as_float(float def = 0) const;
bool as_bool(bool def = false) const;
long long as_llong(long long def = 0) const;
unsigned long long as_ullong(unsigned long long def = 0) const;
bool set(const char_t* rhs);
bool set(const char_t* rhs, size_t size);
bool set(string_view_t rhs);
bool set(int rhs);
bool set(unsigned int rhs);
bool set(long rhs);
bool set(unsigned long rhs);
bool set(double rhs);
bool set(double rhs, int precision);
bool set(float rhs);
bool set(float rhs, int precision);
bool set(bool rhs);
bool set(long long rhs);
bool set(unsigned long long rhs);
xml_text& operator=(const char_t* rhs);
xml_text& operator=(string_view_t rhs);
xml_text& operator=(int rhs);
xml_text& operator=(unsigned int rhs);
xml_text& operator=(long rhs);
xml_text& operator=(unsigned long rhs);
xml_text& operator=(double rhs);
xml_text& operator=(float rhs);
xml_text& operator=(bool rhs);
xml_text& operator=(long long rhs);
xml_text& operator=(unsigned long long rhs);
xml_node data() const;
class xml_writer
virtual void write(const void* data, size_t size) = 0;
class xml_writer_file: public xml_writer
xml_writer_file(void* file);
class xml_writer_stream: public xml_writer
xml_writer_stream(std::ostream& stream);
xml_writer_stream(std::wostream& stream);
struct xpath_parse_result
const char* error;
ptrdiff_t offset;
operator bool() const;
const char* description() const;
class xpath_query
explicit xpath_query(const char_t* query, xpath_variable_set* variables = 0);
bool evaluate_boolean(const xpath_node& n) const;
double evaluate_number(const xpath_node& n) const;
string_t evaluate_string(const xpath_node& n) const;
size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const;
xpath_node_set evaluate_node_set(const xpath_node& n) const;
xpath_node evaluate_node(const xpath_node& n) const;
xpath_value_type return_type() const;
const xpath_parse_result& result() const;
operator unspecified_bool_type() const;
class xpath_exception: public std::exception
virtual const char* what() const noexcept;
const xpath_parse_result& result() const;
class xpath_node
xpath_node();
xpath_node(const xml_node& node);
xpath_node(const xml_attribute& attribute, const xml_node& parent);
xml_node node() const;
xml_attribute attribute() const;
xml_node parent() const;
operator unspecified_bool_type() const;
bool operator==(const xpath_node& n) const;
bool operator!=(const xpath_node& n) const;
class xpath_node_set
xpath_node_set();
xpath_node_set(const_iterator begin, const_iterator end, type_t type = type_unsorted);
typedef const xpath_node* const_iterator;
const_iterator begin() const;
const_iterator end() const;
const xpath_node& operator[](size_t index) const;
size_t size() const;
bool empty() const;
xpath_node first() const;
enum type_t {type_unsorted, type_sorted, type_sorted_reverse};
type_t type() const;
void sort(bool reverse = false);
class xpath_variable
const char_t* name() const;
xpath_value_type type() const;
bool get_boolean() const;
double get_number() const;
const char_t* get_string() const;
const xpath_node_set& get_node_set() const;
bool set(bool value);
bool set(double value);
bool set(const char_t* value);
bool set(const xpath_node_set& value);
class xpath_variable_set
xpath_variable* add(const char_t* name, xpath_value_type type);
bool set(const char_t* name, bool 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 xpath_node_set& value);
xpath_variable* get(const char_t* name);
const xpath_variable* get(const char_t* name) const;
10.6. 関数
std::string as_utf8(const wchar_t* str);
std::string as_utf8(const std::wstring& str);
std::wstring as_wide(const char* str);
std::wstring as_wide(const std::string& str);
void set_memory_management_functions(allocation_function allocate, deallocation_function deallocate);
allocation_function get_memory_allocation_function();
deallocation_function get_memory_deallocation_function();