mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-10 07:55:35 +00:00
Merge branch 'develop' into feature/hadrons
# Conflicts: # lib/serialisation/XmlIO.cc
This commit is contained in:
commit
a21a160029
@ -248,7 +248,6 @@ class GridLimeReader : public BinaryIO {
|
|||||||
template<class serialisable_object>
|
template<class serialisable_object>
|
||||||
void readLimeObject(serialisable_object &object,std::string object_name,std::string record_name)
|
void readLimeObject(serialisable_object &object,std::string object_name,std::string record_name)
|
||||||
{
|
{
|
||||||
std::string xmlstring;
|
|
||||||
// should this be a do while; can we miss a first record??
|
// should this be a do while; can we miss a first record??
|
||||||
while ( limeReaderNextRecord(LimeR) == LIME_SUCCESS ) {
|
while ( limeReaderNextRecord(LimeR) == LIME_SUCCESS ) {
|
||||||
|
|
||||||
@ -262,7 +261,8 @@ class GridLimeReader : public BinaryIO {
|
|||||||
limeReaderReadData((void *)&xmlc[0], &nbytes, LimeR);
|
limeReaderReadData((void *)&xmlc[0], &nbytes, LimeR);
|
||||||
// std::cout << GridLogMessage<< " readLimeObject matches XML " << &xmlc[0] <<std::endl;
|
// std::cout << GridLogMessage<< " readLimeObject matches XML " << &xmlc[0] <<std::endl;
|
||||||
|
|
||||||
XmlReader RD(&xmlc[0],"");
|
std::string xmlstring(&xmlc[0]);
|
||||||
|
XmlReader RD(xmlstring, true, "");
|
||||||
read(RD,object_name,object);
|
read(RD,object_name,object);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -698,9 +698,11 @@ class IldgReader : public GridLimeReader {
|
|||||||
|
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
// ILDG format record
|
// ILDG format record
|
||||||
|
|
||||||
|
std::string xmlstring(&xmlc[0]);
|
||||||
if ( !strncmp(limeReaderType(LimeR), ILDG_FORMAT,strlen(ILDG_FORMAT)) ) {
|
if ( !strncmp(limeReaderType(LimeR), ILDG_FORMAT,strlen(ILDG_FORMAT)) ) {
|
||||||
|
|
||||||
XmlReader RD(&xmlc[0],"");
|
XmlReader RD(xmlstring, true, "");
|
||||||
read(RD,"ildgFormat",ildgFormat_);
|
read(RD,"ildgFormat",ildgFormat_);
|
||||||
|
|
||||||
if ( ildgFormat_.precision == 64 ) format = std::string("IEEE64BIG");
|
if ( ildgFormat_.precision == 64 ) format = std::string("IEEE64BIG");
|
||||||
@ -715,13 +717,13 @@ class IldgReader : public GridLimeReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( !strncmp(limeReaderType(LimeR), ILDG_DATA_LFN,strlen(ILDG_DATA_LFN)) ) {
|
if ( !strncmp(limeReaderType(LimeR), ILDG_DATA_LFN,strlen(ILDG_DATA_LFN)) ) {
|
||||||
FieldMetaData_.ildg_lfn = std::string(&xmlc[0]);
|
FieldMetaData_.ildg_lfn = xmlstring;
|
||||||
found_ildgLFN = 1;
|
found_ildgLFN = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !strncmp(limeReaderType(LimeR), GRID_FORMAT,strlen(ILDG_FORMAT)) ) {
|
if ( !strncmp(limeReaderType(LimeR), GRID_FORMAT,strlen(ILDG_FORMAT)) ) {
|
||||||
|
|
||||||
XmlReader RD(&xmlc[0],"");
|
XmlReader RD(xmlstring, true, "");
|
||||||
read(RD,"FieldMetaData",FieldMetaData_);
|
read(RD,"FieldMetaData",FieldMetaData_);
|
||||||
|
|
||||||
format = FieldMetaData_.floating_point;
|
format = FieldMetaData_.floating_point;
|
||||||
@ -735,18 +737,17 @@ class IldgReader : public GridLimeReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( !strncmp(limeReaderType(LimeR), SCIDAC_RECORD_XML,strlen(SCIDAC_RECORD_XML)) ) {
|
if ( !strncmp(limeReaderType(LimeR), SCIDAC_RECORD_XML,strlen(SCIDAC_RECORD_XML)) ) {
|
||||||
std::string xmls(&xmlc[0]);
|
|
||||||
// is it a USQCD info field
|
// is it a USQCD info field
|
||||||
if ( xmls.find(std::string("usqcdInfo")) != std::string::npos ) {
|
if ( xmlstring.find(std::string("usqcdInfo")) != std::string::npos ) {
|
||||||
// std::cout << GridLogMessage<<"...found a usqcdInfo field"<<std::endl;
|
// std::cout << GridLogMessage<<"...found a usqcdInfo field"<<std::endl;
|
||||||
XmlReader RD(&xmlc[0],"");
|
XmlReader RD(xmlstring, true, "");
|
||||||
read(RD,"usqcdInfo",usqcdInfo_);
|
read(RD,"usqcdInfo",usqcdInfo_);
|
||||||
found_usqcdInfo = 1;
|
found_usqcdInfo = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !strncmp(limeReaderType(LimeR), SCIDAC_CHECKSUM,strlen(SCIDAC_CHECKSUM)) ) {
|
if ( !strncmp(limeReaderType(LimeR), SCIDAC_CHECKSUM,strlen(SCIDAC_CHECKSUM)) ) {
|
||||||
XmlReader RD(&xmlc[0],"");
|
XmlReader RD(xmlstring, true, "");
|
||||||
read(RD,"scidacChecksum",scidacChecksum_);
|
read(RD,"scidacChecksum",scidacChecksum_);
|
||||||
found_scidacChecksum = 1;
|
found_scidacChecksum = 1;
|
||||||
}
|
}
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
pugixml [![Build Status](https://travis-ci.org/zeux/pugixml.svg?branch=master)](https://travis-ci.org/zeux/pugixml) [![Build status](https://ci.appveyor.com/api/projects/status/9hdks1doqvq8pwe7/branch/master?svg=true)](https://ci.appveyor.com/project/zeux/pugixml)
|
|
||||||
=======
|
|
||||||
|
|
||||||
pugixml is a C++ XML processing library, which consists of a DOM-like interface with rich traversal/modification
|
|
||||||
capabilities, an extremely fast XML parser which constructs the DOM tree from an XML file/buffer, and an XPath 1.0
|
|
||||||
implementation for complex data-driven tree queries. Full Unicode support is also available, with Unicode interface
|
|
||||||
variants and conversions between different Unicode encodings (which happen automatically during parsing/saving).
|
|
||||||
|
|
||||||
pugixml is used by a lot of projects, both open-source and proprietary, for performance and easy-to-use interface.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
Documentation for the current release of pugixml is available on-line as two separate documents:
|
|
||||||
|
|
||||||
* [Quick-start guide](http://pugixml.org/docs/quickstart.html), that aims to provide enough information to start using the library;
|
|
||||||
* [Complete reference manual](http://pugixml.org/docs/manual.html), that describes all features of the library in detail.
|
|
||||||
|
|
||||||
You’re advised to start with the quick-start guide; however, many important library features are either not described in it at all or only mentioned briefly; if you require more information you should read the complete manual.
|
|
||||||
|
|
||||||
## License
|
|
||||||
This library is available to anybody free of charge, under the terms of MIT License:
|
|
||||||
|
|
||||||
Copyright (c) 2006-2015 Arseny Kapoulkine
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
|
||||||
obtaining a copy of this software and associated documentation
|
|
||||||
files (the "Software"), to deal in the Software without
|
|
||||||
restriction, including without limitation the rights to use,
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* pugixml parser - version 1.6
|
* pugixml parser - version 1.9
|
||||||
* --------------------------------------------------------
|
* --------------------------------------------------------
|
||||||
* Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
* Copyright (C) 2006-2018, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
* Report bugs and download new versions at http://pugixml.org/
|
* Report bugs and download new versions at http://pugixml.org/
|
||||||
*
|
*
|
||||||
* This library is distributed under the MIT License. See notice at the end
|
* This library is distributed under the MIT License. See notice at the end
|
||||||
@ -17,6 +17,9 @@
|
|||||||
// Uncomment this to enable wchar_t mode
|
// Uncomment this to enable wchar_t mode
|
||||||
// #define PUGIXML_WCHAR_MODE
|
// #define PUGIXML_WCHAR_MODE
|
||||||
|
|
||||||
|
// Uncomment this to enable compact mode
|
||||||
|
// #define PUGIXML_COMPACT
|
||||||
|
|
||||||
// Uncomment this to disable XPath
|
// Uncomment this to disable XPath
|
||||||
// #define PUGIXML_NO_XPATH
|
// #define PUGIXML_NO_XPATH
|
||||||
|
|
||||||
@ -46,7 +49,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2006-2015 Arseny Kapoulkine
|
* Copyright (c) 2006-2018 Arseny Kapoulkine
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation
|
* obtaining a copy of this software and associated documentation
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* pugixml parser - version 1.6
|
* pugixml parser - version 1.9
|
||||||
* --------------------------------------------------------
|
* --------------------------------------------------------
|
||||||
* Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
* Copyright (C) 2006-2018, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
* Report bugs and download new versions at http://pugixml.org/
|
* Report bugs and download new versions at http://pugixml.org/
|
||||||
*
|
*
|
||||||
* This library is distributed under the MIT License. See notice at the end
|
* This library is distributed under the MIT License. See notice at the end
|
||||||
@ -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 160
|
# define PUGIXML_VERSION 190
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Include user configuration file (this can define various configuration macros)
|
// Include user configuration file (this can define various configuration macros)
|
||||||
@ -72,6 +72,44 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// If the platform is known to have move semantics support, compile move ctor/operator implementation
|
||||||
|
#ifndef PUGIXML_HAS_MOVE
|
||||||
|
# if __cplusplus >= 201103
|
||||||
|
# define PUGIXML_HAS_MOVE
|
||||||
|
# elif defined(_MSC_VER) && _MSC_VER >= 1600
|
||||||
|
# define PUGIXML_HAS_MOVE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If C++ is 2011 or higher, add 'noexcept' specifiers
|
||||||
|
#ifndef PUGIXML_NOEXCEPT
|
||||||
|
# if __cplusplus >= 201103
|
||||||
|
# define PUGIXML_NOEXCEPT noexcept
|
||||||
|
# elif defined(_MSC_VER) && _MSC_VER >= 1900
|
||||||
|
# define PUGIXML_NOEXCEPT noexcept
|
||||||
|
# else
|
||||||
|
# define PUGIXML_NOEXCEPT
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Some functions can not be noexcept in compact mode
|
||||||
|
#ifdef PUGIXML_COMPACT
|
||||||
|
# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT
|
||||||
|
#else
|
||||||
|
# define PUGIXML_NOEXCEPT_IF_NOT_COMPACT PUGIXML_NOEXCEPT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// If C++ is 2011 or higher, add 'override' qualifiers
|
||||||
|
#ifndef PUGIXML_OVERRIDE
|
||||||
|
# if __cplusplus >= 201103
|
||||||
|
# define PUGIXML_OVERRIDE override
|
||||||
|
# elif defined(_MSC_VER) && _MSC_VER >= 1700
|
||||||
|
# define PUGIXML_OVERRIDE override
|
||||||
|
# else
|
||||||
|
# define PUGIXML_OVERRIDE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Character interface macros
|
// Character interface macros
|
||||||
#ifdef PUGIXML_WCHAR_MODE
|
#ifdef PUGIXML_WCHAR_MODE
|
||||||
# define PUGIXML_TEXT(t) L ## t
|
# define PUGIXML_TEXT(t) L ## t
|
||||||
@ -158,6 +196,11 @@ namespace pugi
|
|||||||
// is a valid document. This flag is off by default.
|
// is a valid document. This flag is off by default.
|
||||||
const unsigned int parse_fragment = 0x1000;
|
const unsigned int parse_fragment = 0x1000;
|
||||||
|
|
||||||
|
// This flag determines if plain character data is be stored in the parent element's value. This significantly changes the structure of
|
||||||
|
// the document; this flag is only recommended for parsing documents with many PCDATA nodes in memory-constrained environments.
|
||||||
|
// This flag is off by default.
|
||||||
|
const unsigned int parse_embed_pcdata = 0x2000;
|
||||||
|
|
||||||
// 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.
|
||||||
@ -206,6 +249,9 @@ namespace pugi
|
|||||||
// Write every attribute on a new line with appropriate indentation. This flag is off by default.
|
// Write every attribute on a new line with appropriate indentation. This flag is off by default.
|
||||||
const unsigned int format_indent_attributes = 0x40;
|
const unsigned int format_indent_attributes = 0x40;
|
||||||
|
|
||||||
|
// Don't output empty element tags, instead writing an explicit start and end tag even if there are no children. This flag is off by default.
|
||||||
|
const unsigned int format_no_empty_element_tags = 0x80;
|
||||||
|
|
||||||
// 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;
|
||||||
@ -268,7 +314,7 @@ namespace pugi
|
|||||||
// 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) PUGIXML_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void* file;
|
void* file;
|
||||||
@ -283,7 +329,7 @@ namespace pugi
|
|||||||
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);
|
||||||
|
|
||||||
virtual void write(const void* data, size_t size);
|
virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::basic_ostream<char, std::char_traits<char> >* narrow_stream;
|
std::basic_ostream<char, std::char_traits<char> >* narrow_stream;
|
||||||
@ -354,6 +400,8 @@ namespace pugi
|
|||||||
// 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(long rhs);
|
||||||
|
bool set_value(unsigned long rhs);
|
||||||
bool set_value(double rhs);
|
bool set_value(double rhs);
|
||||||
bool set_value(float rhs);
|
bool set_value(float rhs);
|
||||||
bool set_value(bool rhs);
|
bool set_value(bool rhs);
|
||||||
@ -367,6 +415,8 @@ namespace pugi
|
|||||||
xml_attribute& operator=(const char_t* rhs);
|
xml_attribute& operator=(const char_t* rhs);
|
||||||
xml_attribute& operator=(int rhs);
|
xml_attribute& operator=(int rhs);
|
||||||
xml_attribute& operator=(unsigned 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=(double rhs);
|
||||||
xml_attribute& operator=(float rhs);
|
xml_attribute& operator=(float rhs);
|
||||||
xml_attribute& operator=(bool rhs);
|
xml_attribute& operator=(bool rhs);
|
||||||
@ -601,8 +651,8 @@ namespace pugi
|
|||||||
xpath_node_set select_nodes(const xpath_query& query) const;
|
xpath_node_set select_nodes(const xpath_query& query) const;
|
||||||
|
|
||||||
// (deprecated: use select_node instead) Select single node by evaluating XPath query.
|
// (deprecated: use select_node instead) Select single node by evaluating XPath query.
|
||||||
xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = 0) const;
|
PUGIXML_DEPRECATED xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = 0) const;
|
||||||
xpath_node select_single_node(const xpath_query& query) const;
|
PUGIXML_DEPRECATED xpath_node select_single_node(const xpath_query& query) const;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -701,6 +751,8 @@ namespace pugi
|
|||||||
// 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(long rhs);
|
||||||
|
bool set(unsigned long rhs);
|
||||||
bool set(double rhs);
|
bool set(double rhs);
|
||||||
bool set(float rhs);
|
bool set(float rhs);
|
||||||
bool set(bool rhs);
|
bool set(bool rhs);
|
||||||
@ -714,6 +766,8 @@ namespace pugi
|
|||||||
xml_text& operator=(const char_t* rhs);
|
xml_text& operator=(const char_t* rhs);
|
||||||
xml_text& operator=(int rhs);
|
xml_text& operator=(int rhs);
|
||||||
xml_text& operator=(unsigned 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=(double rhs);
|
||||||
xml_text& operator=(float rhs);
|
xml_text& operator=(float rhs);
|
||||||
xml_text& operator=(bool rhs);
|
xml_text& operator=(bool rhs);
|
||||||
@ -945,10 +999,11 @@ namespace pugi
|
|||||||
|
|
||||||
// Non-copyable semantics
|
// Non-copyable semantics
|
||||||
xml_document(const xml_document&);
|
xml_document(const xml_document&);
|
||||||
const xml_document& operator=(const xml_document&);
|
xml_document& operator=(const xml_document&);
|
||||||
|
|
||||||
void create();
|
void _create();
|
||||||
void destroy();
|
void _destroy();
|
||||||
|
void _move(xml_document& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Default constructor, makes empty document
|
// Default constructor, makes empty document
|
||||||
@ -957,6 +1012,12 @@ namespace pugi
|
|||||||
// Destructor, invalidates all node/attribute handles to this document
|
// Destructor, invalidates all node/attribute handles to this document
|
||||||
~xml_document();
|
~xml_document();
|
||||||
|
|
||||||
|
#ifdef PUGIXML_HAS_MOVE
|
||||||
|
// Move semantics support
|
||||||
|
xml_document(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT;
|
||||||
|
xml_document& operator=(xml_document&& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Removes all nodes, leaving the empty document
|
// Removes all nodes, leaving the empty document
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
@ -970,7 +1031,7 @@ namespace pugi
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// (deprecated: use load_string instead) Load document from zero-terminated string. No encoding conversions are applied.
|
// (deprecated: use load_string instead) Load document from zero-terminated string. No encoding conversions are applied.
|
||||||
xml_parse_result load(const char_t* contents, unsigned int options = parse_default);
|
PUGIXML_DEPRECATED xml_parse_result load(const char_t* contents, unsigned int options = parse_default);
|
||||||
|
|
||||||
// Load document from zero-terminated string. No encoding conversions are applied.
|
// Load document from zero-terminated string. No encoding conversions are applied.
|
||||||
xml_parse_result load_string(const char_t* contents, unsigned int options = parse_default);
|
xml_parse_result load_string(const char_t* contents, unsigned int options = parse_default);
|
||||||
@ -1095,10 +1156,10 @@ namespace pugi
|
|||||||
xpath_variable_set(const xpath_variable_set& rhs);
|
xpath_variable_set(const xpath_variable_set& rhs);
|
||||||
xpath_variable_set& operator=(const xpath_variable_set& rhs);
|
xpath_variable_set& operator=(const xpath_variable_set& rhs);
|
||||||
|
|
||||||
#if __cplusplus >= 201103
|
#ifdef PUGIXML_HAS_MOVE
|
||||||
// Move semantics support
|
// Move semantics support
|
||||||
xpath_variable_set(xpath_variable_set&& rhs);
|
xpath_variable_set(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT;
|
||||||
xpath_variable_set& operator=(xpath_variable_set&& rhs);
|
xpath_variable_set& operator=(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 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
|
||||||
@ -1139,10 +1200,10 @@ namespace pugi
|
|||||||
// Destructor
|
// Destructor
|
||||||
~xpath_query();
|
~xpath_query();
|
||||||
|
|
||||||
#if __cplusplus >= 201103
|
#ifdef PUGIXML_HAS_MOVE
|
||||||
// Move semantics support
|
// Move semantics support
|
||||||
xpath_query(xpath_query&& rhs);
|
xpath_query(xpath_query&& rhs) PUGIXML_NOEXCEPT;
|
||||||
xpath_query& operator=(xpath_query&& rhs);
|
xpath_query& operator=(xpath_query&& rhs) PUGIXML_NOEXCEPT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Get query expression return type
|
// Get query expression return type
|
||||||
@ -1201,7 +1262,7 @@ namespace pugi
|
|||||||
explicit xpath_exception(const xpath_parse_result& result);
|
explicit xpath_exception(const xpath_parse_result& result);
|
||||||
|
|
||||||
// Get error message
|
// Get error message
|
||||||
virtual const char* what() const throw();
|
virtual const char* what() const throw() PUGIXML_OVERRIDE;
|
||||||
|
|
||||||
// Get parse result
|
// Get parse result
|
||||||
const xpath_parse_result& result() const;
|
const xpath_parse_result& result() const;
|
||||||
@ -1280,10 +1341,10 @@ namespace pugi
|
|||||||
xpath_node_set(const xpath_node_set& ns);
|
xpath_node_set(const xpath_node_set& ns);
|
||||||
xpath_node_set& operator=(const xpath_node_set& ns);
|
xpath_node_set& operator=(const xpath_node_set& ns);
|
||||||
|
|
||||||
#if __cplusplus >= 201103
|
#ifdef PUGIXML_HAS_MOVE
|
||||||
// Move semantics support
|
// Move semantics support
|
||||||
xpath_node_set(xpath_node_set&& rhs);
|
xpath_node_set(xpath_node_set&& rhs) PUGIXML_NOEXCEPT;
|
||||||
xpath_node_set& operator=(xpath_node_set&& rhs);
|
xpath_node_set& operator=(xpath_node_set&& rhs) PUGIXML_NOEXCEPT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Get collection type
|
// Get collection type
|
||||||
@ -1317,7 +1378,7 @@ namespace pugi
|
|||||||
xpath_node* _end;
|
xpath_node* _end;
|
||||||
|
|
||||||
void _assign(const_iterator begin, const_iterator end, type_t type);
|
void _assign(const_iterator begin, const_iterator end, type_t type);
|
||||||
void _move(xpath_node_set& rhs);
|
void _move(xpath_node_set& rhs) PUGIXML_NOEXCEPT;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1375,7 +1436,7 @@ namespace std
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2006-2015 Arseny Kapoulkine
|
* Copyright (c) 2006-2018 Arseny Kapoulkine
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation
|
* obtaining a copy of this software and associated documentation
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
pugixml 1.6 - an XML processing library
|
pugixml 1.9 - an XML processing library
|
||||||
|
|
||||||
Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
Copyright (C) 2006-2018, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
Report bugs and download new versions at http://pugixml.org/
|
Report bugs and download new versions at http://pugixml.org/
|
||||||
|
|
||||||
This is the distribution of pugixml, which is a C++ XML processing library,
|
This is the distribution of pugixml, which is a C++ XML processing library,
|
||||||
@ -28,7 +28,7 @@ The distribution contains the following folders:
|
|||||||
|
|
||||||
This library is distributed under the MIT License:
|
This library is distributed under the MIT License:
|
||||||
|
|
||||||
Copyright (c) 2006-2015 Arseny Kapoulkine
|
Copyright (c) 2006-2018 Arseny Kapoulkine
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
obtaining a copy of this software and associated documentation
|
obtaining a copy of this software and associated documentation
|
||||||
|
@ -30,6 +30,17 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
|
|||||||
|
|
||||||
using namespace Grid;
|
using namespace Grid;
|
||||||
|
|
||||||
|
void Grid::xmlCheckParse(const pugi::xml_parse_result &result, const std::string name)
|
||||||
|
{
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
std::cerr << "XML parsing error for " << name << std::endl;
|
||||||
|
std::cerr << "XML error description: " << result.description() << std::endl;
|
||||||
|
std::cerr << "XML error offset : " << result.offset << std::endl;
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Writer implementation ///////////////////////////////////////////////////////
|
// Writer implementation ///////////////////////////////////////////////////////
|
||||||
XmlWriter::XmlWriter(const std::string &fileName, std::string toplev) : fileName_(fileName)
|
XmlWriter::XmlWriter(const std::string &fileName, std::string toplev) : fileName_(fileName)
|
||||||
{
|
{
|
||||||
@ -53,6 +64,18 @@ void XmlWriter::push(const std::string &s)
|
|||||||
node_ = node_.append_child(s.c_str());
|
node_ = node_.append_child(s.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XmlWriter::pushXmlString(const std::string &s)
|
||||||
|
{
|
||||||
|
pugi::xml_document doc;
|
||||||
|
auto result = doc.load_buffer(s.c_str(), s.size());
|
||||||
|
|
||||||
|
xmlCheckParse(result, "fragment\n'" + s +"'");
|
||||||
|
for (pugi::xml_node child = doc.first_child(); child; child = child.next_sibling())
|
||||||
|
{
|
||||||
|
node_ = node_.append_copy(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void XmlWriter::pop(void)
|
void XmlWriter::pop(void)
|
||||||
{
|
{
|
||||||
node_ = node_.parent();
|
node_ = node_.parent();
|
||||||
@ -89,14 +112,22 @@ XmlReader::XmlReader(const char *xmlstring,std::string toplev) : fileName_("")
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reader implementation ///////////////////////////////////////////////////////
|
// Reader implementation ///////////////////////////////////////////////////////
|
||||||
XmlReader::XmlReader(const std::string &fileName,std::string toplev) : fileName_(fileName)
|
XmlReader::XmlReader(const std::string &s, const bool isBuffer,
|
||||||
|
std::string toplev)
|
||||||
{
|
{
|
||||||
pugi::xml_parse_result result;
|
pugi::xml_parse_result result;
|
||||||
result = doc_.load_file(fileName_.c_str());
|
|
||||||
if ( !result ) {
|
if (isBuffer)
|
||||||
std::cerr << "XML error description: " << result.description() <<" "<< fileName_ <<"\n";
|
{
|
||||||
std::cerr << "XML error offset : " << result.offset <<" "<< fileName_ <<"\n";
|
fileName_ = "<string>";
|
||||||
abort();
|
result = doc_.load_string(s.c_str());
|
||||||
|
xmlCheckParse(result, "string\n'" + s + "'");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileName_ = s;
|
||||||
|
result = doc_.load_file(s.c_str());
|
||||||
|
xmlCheckParse(result, "file '" + fileName_ + "'");
|
||||||
}
|
}
|
||||||
if ( toplev == std::string("") ) {
|
if ( toplev == std::string("") ) {
|
||||||
node_ = doc_;
|
node_ = doc_;
|
||||||
@ -136,7 +167,6 @@ bool XmlReader::nextElement(const std::string &s)
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
@ -43,6 +43,7 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
|
|||||||
|
|
||||||
namespace Grid
|
namespace Grid
|
||||||
{
|
{
|
||||||
|
void xmlCheckParse(const pugi::xml_parse_result &result, const std::string name);
|
||||||
|
|
||||||
class XmlWriter: public Writer<XmlWriter>
|
class XmlWriter: public Writer<XmlWriter>
|
||||||
{
|
{
|
||||||
@ -50,6 +51,7 @@ namespace Grid
|
|||||||
XmlWriter(const std::string &fileName, std::string toplev = std::string("grid") );
|
XmlWriter(const std::string &fileName, std::string toplev = std::string("grid") );
|
||||||
virtual ~XmlWriter(void);
|
virtual ~XmlWriter(void);
|
||||||
void push(const std::string &s);
|
void push(const std::string &s);
|
||||||
|
void pushXmlString(const std::string &s);
|
||||||
void pop(void);
|
void pop(void);
|
||||||
template <typename U>
|
template <typename U>
|
||||||
void writeDefault(const std::string &s, const U &x);
|
void writeDefault(const std::string &s, const U &x);
|
||||||
@ -67,8 +69,8 @@ namespace Grid
|
|||||||
class XmlReader: public Reader<XmlReader>
|
class XmlReader: public Reader<XmlReader>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
XmlReader(const char *xmlstring,std::string toplev = std::string("grid") );
|
XmlReader(const std::string &fileName, const bool isBuffer = false,
|
||||||
XmlReader(const std::string &fileName,std::string toplev = std::string("grid") );
|
std::string toplev = std::string("grid") );
|
||||||
virtual ~XmlReader(void) = default;
|
virtual ~XmlReader(void) = default;
|
||||||
bool push(const std::string &s);
|
bool push(const std::string &s);
|
||||||
void pop(void);
|
void pop(void);
|
||||||
@ -77,6 +79,8 @@ namespace Grid
|
|||||||
void readDefault(const std::string &s, U &output);
|
void readDefault(const std::string &s, U &output);
|
||||||
template <typename U>
|
template <typename U>
|
||||||
void readDefault(const std::string &s, std::vector<U> &output);
|
void readDefault(const std::string &s, std::vector<U> &output);
|
||||||
|
private:
|
||||||
|
void checkParse(const pugi::xml_parse_result &result, const std::string name);
|
||||||
private:
|
private:
|
||||||
pugi::xml_document doc_;
|
pugi::xml_document doc_;
|
||||||
pugi::xml_node node_;
|
pugi::xml_node node_;
|
||||||
|
Loading…
Reference in New Issue
Block a user