Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
pugi::xml_document Class Reference

#include <pugixml.hpp>

Inheritance diagram for pugi::xml_document:

Public Member Functions

 xml_document ()
 ~xml_document ()
void reset ()
void reset (const xml_document &proto)
xml_parse_result load (std::basic_istream< char, std::char_traits< char > > &stream, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
xml_parse_result load (std::basic_istream< wchar_t, std::char_traits< wchar_t > > &stream, unsigned int options=parse_default)
PUGIXML_DEPRECATED xml_parse_result load (const char_t *contents, 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)
void save (xml_writer &writer, const char_t *indent=PUGIXML_TEXT("\t"), unsigned int flags=format_default, xml_encoding encoding=encoding_auto) const
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
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
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
xml_node document_element () const
Public Member Functions inherited from pugi::xml_node
 xml_node ()
 xml_node (xml_node_struct *p)
 operator unspecified_bool_type () const
bool operator! () 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
bool empty () const
xml_node_type type () const
const char_tname () const
const char_tvalue () const
xml_attribute first_attribute () const
xml_attribute last_attribute () const
xml_node first_child () const
xml_node last_child () const
xml_node next_sibling () const
xml_node previous_sibling () const
xml_node parent () const
xml_node root () const
xml_text text () const
xml_node child (const char_t *name) const
xml_attribute attribute (const char_t *name) const
xml_node next_sibling (const char_t *name) const
xml_node previous_sibling (const char_t *name) const
xml_attribute attribute (const char_t *name, xml_attribute &hint) const
const char_tchild_value () const
const char_tchild_value (const char_t *name) const
bool set_name (const char_t *rhs)
bool set_value (const char_t *rhs, size_t sz)
bool set_value (const char_t *rhs)
xml_attribute append_attribute (const char_t *name)
xml_attribute prepend_attribute (const char_t *name)
xml_attribute insert_attribute_after (const char_t *name, const xml_attribute &attr)
xml_attribute insert_attribute_before (const char_t *name, const xml_attribute &attr)
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_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 prepend_child (const char_t *name)
xml_node insert_child_after (const char_t *name, const xml_node &node)
xml_node insert_child_before (const char_t *name, const xml_node &node)
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_attributes ()
bool remove_child (const xml_node &n)
bool remove_child (const char_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)
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
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
string_t path (char_t delimiter='/') const
xml_node first_element_by_path (const char_t *path, char_t delimiter='/') const
bool traverse (xml_tree_walker &walker)
xpath_node select_node (const char_t *query, xpath_variable_set *variables=PUGIXML_NULL) const
xpath_node select_node (const xpath_query &query) const
xpath_node_set select_nodes (const char_t *query, xpath_variable_set *variables=PUGIXML_NULL) const
xpath_node_set select_nodes (const xpath_query &query) const
PUGIXML_DEPRECATED xpath_node select_single_node (const char_t *query, xpath_variable_set *variables=PUGIXML_NULL) const
PUGIXML_DEPRECATED xpath_node select_single_node (const xpath_query &query) const
void print (xml_writer &writer, const char_t *indent=PUGIXML_TEXT("\t"), unsigned int flags=format_default, xml_encoding encoding=encoding_auto, unsigned int depth=0) const
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
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
iterator begin () const
iterator end () const
attribute_iterator attributes_begin () const
attribute_iterator attributes_end () const
xml_object_range< xml_node_iteratorchildren () const
xml_object_range< xml_named_node_iteratorchildren (const char_t *name) const
xml_object_range< xml_attribute_iteratorattributes () const
ptrdiff_t offset_debug () const
size_t hash_value () const
xml_node_struct * internal_object () const

Additional Inherited Members

Public Types inherited from pugi::xml_node
typedef xml_node_iterator iterator
typedef xml_attribute_iterator attribute_iterator
Protected Types inherited from pugi::xml_node
typedef void(* unspecified_bool_type) (xml_node ***)
Protected Attributes inherited from pugi::xml_node
xml_node_struct * _root

Detailed Description

Definition at line 1029 of file pugixml.hpp.

Constructor & Destructor Documentation

◆ xml_document()

PUGI__FN pugi::xml_document::xml_document ( )

Definition at line 7068 of file pugixml.cc.

7068 : _buffer(0)
7069 {
7070 _create();
7071 }

◆ ~xml_document()

PUGI__FN pugi::xml_document::~xml_document ( )

Definition at line 7073 of file pugixml.cc.

7074 {
7075 _destroy();
7076 }

Member Function Documentation

◆ document_element()

PUGI__FN xml_node pugi::xml_document::document_element ( ) const

Definition at line 7437 of file pugixml.cc.

7438 {
7439 assert(_root);
7440
7441 for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling)
7442 if (PUGI__NODETYPE(i) == node_element)
7443 return xml_node(i);
7444
7445 return xml_node();
7446 }
xml_node_struct * _root
Definition pugixml.hpp:480
@ node_element
Definition pugixml.hpp:153
#define PUGI__NODETYPE(n)
Definition pugixml.cc:456

◆ load() [1/3]

PUGI__FN xml_parse_result pugi::xml_document::load ( const char_t * contents,
unsigned int options = parse_default )

Definition at line 7331 of file pugixml.cc.

7332 {
7333 return load_string(contents, options);
7334 }
xml_parse_result load_string(const char_t *contents, unsigned int options=parse_default)
Definition pugixml.cc:7319

◆ load() [2/3]

PUGI__FN xml_parse_result pugi::xml_document::load ( std::basic_istream< char, std::char_traits< char > > & stream,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7304 of file pugixml.cc.

7305 {
7306 reset();
7307
7308 return impl::load_stream_impl(static_cast<impl::xml_document_struct*>(_root), stream, options, encoding, &_buffer);
7309 }

◆ load() [3/3]

PUGI__FN xml_parse_result pugi::xml_document::load ( std::basic_istream< wchar_t, std::char_traits< wchar_t > > & stream,
unsigned int options = parse_default )

Definition at line 7311 of file pugixml.cc.

7312 {
7313 reset();
7314
7315 return impl::load_stream_impl(static_cast<impl::xml_document_struct*>(_root), stream, options, encoding_wchar, &_buffer);
7316 }
@ encoding_wchar
Definition pugixml.hpp:237

◆ load_buffer()

PUGI__FN xml_parse_result pugi::xml_document::load_buffer ( const void * contents,
size_t size,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7356 of file pugixml.cc.

7357 {
7358 reset();
7359
7360 return impl::load_buffer_impl(static_cast<impl::xml_document_struct*>(_root), _root, const_cast<void*>(contents), size, options, encoding, false, false, &_buffer);
7361 }

Referenced by load_string().

◆ load_buffer_inplace()

PUGI__FN xml_parse_result pugi::xml_document::load_buffer_inplace ( void * contents,
size_t size,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7363 of file pugixml.cc.

7364 {
7365 reset();
7366
7367 return impl::load_buffer_impl(static_cast<impl::xml_document_struct*>(_root), _root, contents, size, options, encoding, true, false, &_buffer);
7368 }

◆ load_buffer_inplace_own()

PUGI__FN xml_parse_result pugi::xml_document::load_buffer_inplace_own ( void * contents,
size_t size,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7370 of file pugixml.cc.

7371 {
7372 reset();
7373
7374 return impl::load_buffer_impl(static_cast<impl::xml_document_struct*>(_root), _root, contents, size, options, encoding, true, true, &_buffer);
7375 }

◆ load_file() [1/2]

PUGI__FN xml_parse_result pugi::xml_document::load_file ( const char * path,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7336 of file pugixml.cc.

7337 {
7338 reset();
7339
7340 using impl::auto_deleter; // MSVC7 workaround
7341 auto_deleter<FILE> file(impl::open_file(path_, "rb"), impl::close_file);
7342
7343 return impl::load_file_impl(static_cast<impl::xml_document_struct*>(_root), file.data, options, encoding, &_buffer);
7344 }

◆ load_file() [2/2]

PUGI__FN xml_parse_result pugi::xml_document::load_file ( const wchar_t * path,
unsigned int options = parse_default,
xml_encoding encoding = encoding_auto )

Definition at line 7346 of file pugixml.cc.

7347 {
7348 reset();
7349
7350 using impl::auto_deleter; // MSVC7 workaround
7351 auto_deleter<FILE> file(impl::open_file_wide(path_, L"rb"), impl::close_file);
7352
7353 return impl::load_file_impl(static_cast<impl::xml_document_struct*>(_root), file.data, options, encoding, &_buffer);
7354 }

◆ load_string()

PUGI__FN xml_parse_result pugi::xml_document::load_string ( const char_t * contents,
unsigned int options = parse_default )

Definition at line 7319 of file pugixml.cc.

7320 {
7321 // Force native encoding (skip autodetection)
7322 #ifdef PUGIXML_WCHAR_MODE
7323 xml_encoding encoding = encoding_wchar;
7324 #else
7325 xml_encoding encoding = encoding_utf8;
7326 #endif
7327
7328 return load_buffer(contents, impl::strlength(contents) * sizeof(char_t), options, encoding);
7329 }
xml_parse_result load_buffer(const void *contents, size_t size, unsigned int options=parse_default, xml_encoding encoding=encoding_auto)
Definition pugixml.cc:7356
xml_encoding
Definition pugixml.hpp:228
@ encoding_utf8
Definition pugixml.hpp:230
PUGIXML_CHAR char_t
Definition pugixml.hpp:137

Referenced by PoPI::Database::addDatabase(), and load().

◆ reset() [1/2]

PUGI__FN void pugi::xml_document::reset ( )

Definition at line 7097 of file pugixml.cc.

7098 {
7099 _destroy();
7100 _create();
7101 }

Referenced by load(), load(), load_buffer(), load_buffer_inplace(), load_buffer_inplace_own(), load_file(), load_file(), and reset().

◆ reset() [2/2]

PUGI__FN void pugi::xml_document::reset ( const xml_document & proto)

Definition at line 7103 of file pugixml.cc.

7104 {
7105 reset();
7106
7107 impl::node_copy_tree(_root, proto._root);
7108 }

◆ save() [1/3]

PUGI__FN void pugi::xml_document::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

Definition at line 7406 of file pugixml.cc.

7407 {
7408 xml_writer_stream writer(stream);
7409
7410 save(writer, indent, flags, encoding);
7411 }
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.cc:7377

◆ save() [2/3]

PUGI__FN void pugi::xml_document::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

Definition at line 7413 of file pugixml.cc.

7414 {
7415 xml_writer_stream writer(stream);
7416
7417 save(writer, indent, flags, encoding_wchar);
7418 }

◆ save() [3/3]

PUGI__FN void pugi::xml_document::save ( xml_writer & writer,
const char_t * indent = PUGIXML_TEXT("\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto ) const

Definition at line 7377 of file pugixml.cc.

7378 {
7379 impl::xml_buffered_writer buffered_writer(writer, encoding);
7380
7381 if ((flags & format_write_bom) && encoding != encoding_latin1)
7382 {
7383 // BOM always represents the codepoint U+FEFF, so just write it in native encoding
7384 #ifdef PUGIXML_WCHAR_MODE
7385 unsigned int bom = 0xfeff;
7386 buffered_writer.write(static_cast<wchar_t>(bom));
7387 #else
7388 buffered_writer.write('\xef', '\xbb', '\xbf');
7389 #endif
7390 }
7391
7392 if (!(flags & format_no_declaration) && !impl::has_declaration(_root))
7393 {
7394 buffered_writer.write_string(PUGIXML_TEXT("<?xml version=\"1.0\""));
7395 if (encoding == encoding_latin1) buffered_writer.write_string(PUGIXML_TEXT(" encoding=\"ISO-8859-1\""));
7396 buffered_writer.write('?', '>');
7397 if (!(flags & format_raw)) buffered_writer.write('\n');
7398 }
7399
7400 impl::node_output(buffered_writer, _root, indent, flags, 0);
7401
7402 buffered_writer.flush();
7403 }
@ encoding_latin1
Definition pugixml.hpp:238
const unsigned int format_no_declaration
Definition pugixml.hpp:253
const unsigned int format_raw
Definition pugixml.hpp:250
const unsigned int format_write_bom
Definition pugixml.hpp:247
#define PUGIXML_TEXT(t)
Definition pugixml.hpp:130

Referenced by save(), and save().

◆ save_file() [1/2]

PUGI__FN bool pugi::xml_document::save_file ( const char * path,
const char_t * indent = PUGIXML_TEXT("\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto ) const

Definition at line 7421 of file pugixml.cc.

7422 {
7423 using impl::auto_deleter; // MSVC7 workaround
7424 auto_deleter<FILE> file(impl::open_file(path_, (flags & format_save_file_text) ? "w" : "wb"), impl::close_file);
7425
7426 return impl::save_file_impl(*this, file.data, indent, flags, encoding) && fclose(file.release()) == 0;
7427 }
const unsigned int format_save_file_text
Definition pugixml.hpp:259

◆ save_file() [2/2]

PUGI__FN bool pugi::xml_document::save_file ( const wchar_t * path,
const char_t * indent = PUGIXML_TEXT("\t"),
unsigned int flags = format_default,
xml_encoding encoding = encoding_auto ) const

Definition at line 7429 of file pugixml.cc.

7430 {
7431 using impl::auto_deleter; // MSVC7 workaround
7432 auto_deleter<FILE> file(impl::open_file_wide(path_, (flags & format_save_file_text) ? L"w" : L"wb"), impl::close_file);
7433
7434 return impl::save_file_impl(*this, file.data, indent, flags, encoding) && fclose(file.release()) == 0;
7435 }

The documentation for this class was generated from the following files: