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>
 | 
					  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 [](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/
 | 
					 * 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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,17 @@ Author: paboyle <paboyle@ph.ed.ac.uk>
 | 
				
			|||||||
using namespace Grid;
 | 
					using namespace Grid;
 | 
				
			||||||
using namespace std;
 | 
					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 ///////////////////////////////////////////////////////
 | 
					// Writer implementation ///////////////////////////////////////////////////////
 | 
				
			||||||
XmlWriter::XmlWriter(const string &fileName, string toplev) : fileName_(fileName)
 | 
					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());
 | 
					  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)
 | 
					void XmlWriter::pop(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  node_ = node_.parent();
 | 
					  node_ = node_.parent();
 | 
				
			||||||
@@ -65,40 +89,32 @@ std::string XmlWriter::XmlString(void)
 | 
				
			|||||||
  return oss.str();
 | 
					  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 ///////////////////////////////////////////////////////
 | 
					// 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;
 | 
					  pugi::xml_parse_result result;
 | 
				
			||||||
  result = doc_.load_file(fileName_.c_str());
 | 
					  
 | 
				
			||||||
  if ( !result ) {
 | 
					  if (isBuffer)
 | 
				
			||||||
    cerr << "XML error description: " << result.description() <<" "<< fileName_ <<"\n";
 | 
					  {
 | 
				
			||||||
    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_;
 | 
				
			||||||
  } else { 
 | 
					  } else { 
 | 
				
			||||||
    node_ = doc_.child(toplev.c_str());
 | 
					    node_ = doc_.child(toplev.c_str());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool XmlReader::push(const string &s)
 | 
					bool XmlReader::push(const std::string &s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (node_.child(s.c_str()))
 | 
					  if (node_.child(s.c_str()))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@@ -129,7 +145,6 @@ bool XmlReader::nextElement(const std::string &s)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <>
 | 
					template <>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,13 +43,15 @@ 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>
 | 
				
			||||||
  {    
 | 
					  {    
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    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);
 | 
				
			||||||
@@ -65,8 +67,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);
 | 
				
			||||||
@@ -75,6 +77,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_;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user