mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 21:44:33 +00:00 
			
		
		
		
	Merge branch 'develop' of https://github.com/paboyle/Grid into develop
This commit is contained in:
		@@ -248,7 +248,6 @@ class GridLimeReader : public BinaryIO {
 | 
			
		||||
  template<class serialisable_object>
 | 
			
		||||
  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??
 | 
			
		||||
    while ( limeReaderNextRecord(LimeR) == LIME_SUCCESS ) { 
 | 
			
		||||
 | 
			
		||||
@@ -262,7 +261,8 @@ class GridLimeReader : public BinaryIO {
 | 
			
		||||
	limeReaderReadData((void *)&xmlc[0], &nbytes, LimeR);    
 | 
			
		||||
	//	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);
 | 
			
		||||
	return;
 | 
			
		||||
      }
 | 
			
		||||
@@ -698,9 +698,11 @@ class IldgReader : public GridLimeReader {
 | 
			
		||||
 | 
			
		||||
	//////////////////////////////////
 | 
			
		||||
	// ILDG format record
 | 
			
		||||
 | 
			
		||||
  std::string xmlstring(&xmlc[0]);
 | 
			
		||||
	if ( !strncmp(limeReaderType(LimeR), ILDG_FORMAT,strlen(ILDG_FORMAT)) ) { 
 | 
			
		||||
 | 
			
		||||
	  XmlReader RD(&xmlc[0],"");
 | 
			
		||||
	  XmlReader RD(xmlstring, true, "");
 | 
			
		||||
	  read(RD,"ildgFormat",ildgFormat_);
 | 
			
		||||
 | 
			
		||||
	  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)) ) {
 | 
			
		||||
	  FieldMetaData_.ildg_lfn = std::string(&xmlc[0]);
 | 
			
		||||
	  FieldMetaData_.ildg_lfn = xmlstring;
 | 
			
		||||
	  found_ildgLFN = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ( !strncmp(limeReaderType(LimeR), GRID_FORMAT,strlen(ILDG_FORMAT)) ) { 
 | 
			
		||||
 | 
			
		||||
	  XmlReader RD(&xmlc[0],"");
 | 
			
		||||
	  XmlReader RD(xmlstring, true, "");
 | 
			
		||||
	  read(RD,"FieldMetaData",FieldMetaData_);
 | 
			
		||||
 | 
			
		||||
	  format = FieldMetaData_.floating_point;
 | 
			
		||||
@@ -735,18 +737,17 @@ class IldgReader : public GridLimeReader {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ( !strncmp(limeReaderType(LimeR), SCIDAC_RECORD_XML,strlen(SCIDAC_RECORD_XML)) ) { 
 | 
			
		||||
	  std::string xmls(&xmlc[0]);
 | 
			
		||||
	  // 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;
 | 
			
		||||
	    XmlReader RD(&xmlc[0],"");
 | 
			
		||||
	    XmlReader RD(xmlstring, true, "");
 | 
			
		||||
	    read(RD,"usqcdInfo",usqcdInfo_);
 | 
			
		||||
	    found_usqcdInfo = 1;
 | 
			
		||||
	  }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ( !strncmp(limeReaderType(LimeR), SCIDAC_CHECKSUM,strlen(SCIDAC_CHECKSUM)) ) { 
 | 
			
		||||
	  XmlReader RD(&xmlc[0],"");
 | 
			
		||||
	  XmlReader RD(xmlstring, true, "");
 | 
			
		||||
	  read(RD,"scidacChecksum",scidacChecksum_);
 | 
			
		||||
	  found_scidacChecksum = 1;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
pugixml [](https://travis-ci.org/zeux/pugixml) [](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/
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed under the MIT License. See notice at the end
 | 
			
		||||
@@ -17,6 +17,9 @@
 | 
			
		||||
// Uncomment this to enable wchar_t mode
 | 
			
		||||
// #define PUGIXML_WCHAR_MODE
 | 
			
		||||
 | 
			
		||||
// Uncomment this to enable compact mode
 | 
			
		||||
// #define PUGIXML_COMPACT
 | 
			
		||||
 | 
			
		||||
// Uncomment this to disable XPath
 | 
			
		||||
// #define PUGIXML_NO_XPATH
 | 
			
		||||
 | 
			
		||||
@@ -46,7 +49,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2006-2015 Arseny Kapoulkine
 | 
			
		||||
 * Copyright (c) 2006-2018 Arseny Kapoulkine
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person
 | 
			
		||||
 * 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/
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed under the MIT License. See notice at the end
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
 | 
			
		||||
#ifndef PUGIXML_VERSION
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
// Include user configuration file (this can define various configuration macros)
 | 
			
		||||
@@ -72,6 +72,44 @@
 | 
			
		||||
#	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
 | 
			
		||||
#ifdef PUGIXML_WCHAR_MODE
 | 
			
		||||
#	define PUGIXML_TEXT(t) L ## t
 | 
			
		||||
@@ -158,6 +196,11 @@ namespace pugi
 | 
			
		||||
	// is a valid document. This flag is off by default.
 | 
			
		||||
	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.
 | 
			
		||||
	// 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.
 | 
			
		||||
@@ -206,6 +249,9 @@ namespace pugi
 | 
			
		||||
	// Write every attribute on a new line with appropriate indentation. This flag is off by default.
 | 
			
		||||
	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.
 | 
			
		||||
	// 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;
 | 
			
		||||
@@ -268,7 +314,7 @@ namespace pugi
 | 
			
		||||
		// Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio
 | 
			
		||||
		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:
 | 
			
		||||
		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<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:
 | 
			
		||||
		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")
 | 
			
		||||
		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(float rhs);
 | 
			
		||||
		bool set_value(bool rhs);
 | 
			
		||||
@@ -367,6 +415,8 @@ namespace pugi
 | 
			
		||||
		xml_attribute& operator=(const char_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);
 | 
			
		||||
@@ -601,8 +651,8 @@ namespace pugi
 | 
			
		||||
		xpath_node_set select_nodes(const xpath_query& query) const;
 | 
			
		||||
 | 
			
		||||
		// (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;
 | 
			
		||||
		xpath_node select_single_node(const xpath_query& query) const;
 | 
			
		||||
		PUGIXML_DEPRECATED xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = 0) const;
 | 
			
		||||
		PUGIXML_DEPRECATED xpath_node select_single_node(const xpath_query& query) const;
 | 
			
		||||
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
@@ -701,6 +751,8 @@ namespace pugi
 | 
			
		||||
		// Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
 | 
			
		||||
		bool set(int rhs);
 | 
			
		||||
		bool set(unsigned int rhs);
 | 
			
		||||
		bool set(long rhs);
 | 
			
		||||
		bool set(unsigned long rhs);
 | 
			
		||||
		bool set(double rhs);
 | 
			
		||||
		bool set(float rhs);
 | 
			
		||||
		bool set(bool rhs);
 | 
			
		||||
@@ -714,6 +766,8 @@ namespace pugi
 | 
			
		||||
		xml_text& operator=(const char_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);
 | 
			
		||||
@@ -945,10 +999,11 @@ namespace pugi
 | 
			
		||||
 | 
			
		||||
		// Non-copyable semantics
 | 
			
		||||
		xml_document(const xml_document&);
 | 
			
		||||
		const xml_document& operator=(const xml_document&);
 | 
			
		||||
		xml_document& operator=(const xml_document&);
 | 
			
		||||
 | 
			
		||||
		void create();
 | 
			
		||||
		void destroy();
 | 
			
		||||
		void _create();
 | 
			
		||||
		void _destroy();
 | 
			
		||||
		void _move(xml_document& rhs) PUGIXML_NOEXCEPT_IF_NOT_COMPACT;
 | 
			
		||||
 | 
			
		||||
	public:
 | 
			
		||||
		// Default constructor, makes empty document
 | 
			
		||||
@@ -957,6 +1012,12 @@ namespace pugi
 | 
			
		||||
		// Destructor, invalidates all node/attribute handles to this 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
 | 
			
		||||
		void reset();
 | 
			
		||||
 | 
			
		||||
@@ -970,7 +1031,7 @@ namespace pugi
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
		// (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.
 | 
			
		||||
		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& operator=(const xpath_variable_set& rhs);
 | 
			
		||||
 | 
			
		||||
	#if __cplusplus >= 201103
 | 
			
		||||
	#ifdef PUGIXML_HAS_MOVE
 | 
			
		||||
		// Move semantics support
 | 
			
		||||
		xpath_variable_set(xpath_variable_set&& rhs);
 | 
			
		||||
		xpath_variable_set& operator=(xpath_variable_set&& rhs);
 | 
			
		||||
		xpath_variable_set(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
		xpath_variable_set& operator=(xpath_variable_set&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
		// Add a new variable or get the existing one, if the types match
 | 
			
		||||
@@ -1139,10 +1200,10 @@ namespace pugi
 | 
			
		||||
		// Destructor
 | 
			
		||||
		~xpath_query();
 | 
			
		||||
 | 
			
		||||
	#if __cplusplus >= 201103
 | 
			
		||||
	#ifdef PUGIXML_HAS_MOVE
 | 
			
		||||
		// Move semantics support
 | 
			
		||||
		xpath_query(xpath_query&& rhs);
 | 
			
		||||
		xpath_query& operator=(xpath_query&& rhs);
 | 
			
		||||
		xpath_query(xpath_query&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
		xpath_query& operator=(xpath_query&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
		// Get query expression return type
 | 
			
		||||
@@ -1201,7 +1262,7 @@ namespace pugi
 | 
			
		||||
		explicit xpath_exception(const xpath_parse_result& result);
 | 
			
		||||
 | 
			
		||||
		// Get error message
 | 
			
		||||
		virtual const char* what() const throw();
 | 
			
		||||
		virtual const char* what() const throw() PUGIXML_OVERRIDE;
 | 
			
		||||
 | 
			
		||||
		// Get parse result
 | 
			
		||||
		const xpath_parse_result& result() const;
 | 
			
		||||
@@ -1280,10 +1341,10 @@ namespace pugi
 | 
			
		||||
		xpath_node_set(const xpath_node_set& ns);
 | 
			
		||||
		xpath_node_set& operator=(const xpath_node_set& ns);
 | 
			
		||||
 | 
			
		||||
	#if __cplusplus >= 201103
 | 
			
		||||
	#ifdef PUGIXML_HAS_MOVE
 | 
			
		||||
		// Move semantics support
 | 
			
		||||
		xpath_node_set(xpath_node_set&& rhs);
 | 
			
		||||
		xpath_node_set& operator=(xpath_node_set&& rhs);
 | 
			
		||||
		xpath_node_set(xpath_node_set&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
		xpath_node_set& operator=(xpath_node_set&& rhs) PUGIXML_NOEXCEPT;
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
		// Get collection type
 | 
			
		||||
@@ -1317,7 +1378,7 @@ namespace pugi
 | 
			
		||||
		xpath_node* _end;
 | 
			
		||||
 | 
			
		||||
		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
 | 
			
		||||
 | 
			
		||||
@@ -1375,7 +1436,7 @@ namespace std
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2006-2015 Arseny Kapoulkine
 | 
			
		||||
 * Copyright (c) 2006-2018 Arseny Kapoulkine
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person
 | 
			
		||||
 * 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/
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2006-2015 Arseny Kapoulkine
 | 
			
		||||
Copyright (c) 2006-2018 Arseny Kapoulkine
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person
 | 
			
		||||
obtaining a copy of this software and associated documentation
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,17 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
 | 
			
		||||
using namespace Grid;
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
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 ///////////////////////////////////////////////////////
 | 
			
		||||
XmlWriter::XmlWriter(const string &fileName, string toplev) : fileName_(fileName)
 | 
			
		||||
{
 | 
			
		||||
@@ -54,6 +65,19 @@ void XmlWriter::push(const string &s)
 | 
			
		||||
  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);
 | 
			
		||||
  }
 | 
			
		||||
  pop();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void XmlWriter::pop(void)
 | 
			
		||||
{
 | 
			
		||||
  node_ = node_.parent();
 | 
			
		||||
@@ -65,31 +89,23 @@ std::string XmlWriter::XmlString(void)
 | 
			
		||||
  return oss.str();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
XmlReader::XmlReader(const char *xmlstring,string toplev) : fileName_("")
 | 
			
		||||
{
 | 
			
		||||
  pugi::xml_parse_result result;
 | 
			
		||||
  result = doc_.load_string(xmlstring);
 | 
			
		||||
  if ( !result ) {
 | 
			
		||||
    cerr << "XML error description (from char *): " << result.description() << "\nXML\n"<< xmlstring << "\n";
 | 
			
		||||
    cerr << "XML error offset      (from char *) " << result.offset         << "\nXML\n"<< xmlstring <<"\n";
 | 
			
		||||
    abort();
 | 
			
		||||
  }
 | 
			
		||||
  if ( toplev == std::string("") ) {
 | 
			
		||||
    node_ = doc_;
 | 
			
		||||
  } else { 
 | 
			
		||||
    node_ = doc_.child(toplev.c_str());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reader implementation ///////////////////////////////////////////////////////
 | 
			
		||||
XmlReader::XmlReader(const string &fileName,string toplev) : fileName_(fileName)
 | 
			
		||||
XmlReader::XmlReader(const std::string &s,  const bool isBuffer, 
 | 
			
		||||
                     std::string toplev) 
 | 
			
		||||
{
 | 
			
		||||
  pugi::xml_parse_result result;
 | 
			
		||||
  result = doc_.load_file(fileName_.c_str());
 | 
			
		||||
  if ( !result ) {
 | 
			
		||||
    cerr << "XML error description: " << result.description() <<" "<< fileName_ <<"\n";
 | 
			
		||||
    cerr << "XML error offset     : " << result.offset        <<" "<< fileName_ <<"\n";
 | 
			
		||||
    abort();
 | 
			
		||||
  
 | 
			
		||||
  if (isBuffer)
 | 
			
		||||
  {
 | 
			
		||||
    fileName_ = "<string>";
 | 
			
		||||
    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("") ) {
 | 
			
		||||
  node_ = doc_;
 | 
			
		||||
@@ -98,7 +114,7 @@ XmlReader::XmlReader(const string &fileName,string toplev) : fileName_(fileName)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool XmlReader::push(const string &s)
 | 
			
		||||
bool XmlReader::push(const std::string &s)
 | 
			
		||||
{
 | 
			
		||||
  if (node_.child(s.c_str()))
 | 
			
		||||
  {
 | 
			
		||||
@@ -129,7 +145,6 @@ bool XmlReader::nextElement(const std::string &s)
 | 
			
		||||
  {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
 | 
			
		||||
 | 
			
		||||
namespace Grid
 | 
			
		||||
{
 | 
			
		||||
  void xmlCheckParse(const pugi::xml_parse_result &result, const std::string name);
 | 
			
		||||
  
 | 
			
		||||
  class XmlWriter: public Writer<XmlWriter>
 | 
			
		||||
  {    
 | 
			
		||||
@@ -50,6 +51,7 @@ namespace Grid
 | 
			
		||||
    XmlWriter(const std::string &fileName, std::string toplev = std::string("grid") );
 | 
			
		||||
    virtual ~XmlWriter(void);
 | 
			
		||||
    void push(const std::string &s);
 | 
			
		||||
    void pushXmlString(const std::string &s);
 | 
			
		||||
    void pop(void);
 | 
			
		||||
    template <typename U>
 | 
			
		||||
    void writeDefault(const std::string &s, const U &x);
 | 
			
		||||
@@ -65,8 +67,8 @@ namespace Grid
 | 
			
		||||
  class XmlReader: public Reader<XmlReader>
 | 
			
		||||
  {
 | 
			
		||||
  public:
 | 
			
		||||
    XmlReader(const char *xmlstring,std::string toplev = std::string("grid") );
 | 
			
		||||
    XmlReader(const std::string &fileName,std::string toplev = std::string("grid") );
 | 
			
		||||
    XmlReader(const std::string &fileName, const bool isBuffer = false, 
 | 
			
		||||
              std::string toplev = std::string("grid") );
 | 
			
		||||
    virtual ~XmlReader(void) = default;
 | 
			
		||||
    bool push(const std::string &s);
 | 
			
		||||
    void pop(void);
 | 
			
		||||
@@ -75,6 +77,8 @@ namespace Grid
 | 
			
		||||
    void readDefault(const std::string &s, U &output);
 | 
			
		||||
    template <typename U>
 | 
			
		||||
    void readDefault(const std::string &s, std::vector<U> &output);
 | 
			
		||||
  private:
 | 
			
		||||
    void checkParse(const pugi::xml_parse_result &result, const std::string name);
 | 
			
		||||
  private:
 | 
			
		||||
    pugi::xml_document doc_;
 | 
			
		||||
    pugi::xml_node     node_;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user