diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pugixml.cpp | 72 | ||||
| -rw-r--r-- | src/pugixml.hpp | 8 | 
2 files changed, 80 insertions, 0 deletions
| diff --git a/src/pugixml.cpp b/src/pugixml.cpp index ad6fbc2..8535879 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -4551,6 +4551,26 @@ PUGI__NS_BEGIN  	}  	template <typename String, typename Header> +	PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, long value) +	{ +		char_t buf[64]; +		char_t* end = buf + sizeof(buf) / sizeof(buf[0]); +		char_t* begin = integer_to_string<unsigned long>(buf, end, value, value < 0); + +		return strcpy_insitu(dest, header, header_mask, begin, end - begin); +	} + +	template <typename String, typename Header> +	PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, unsigned long value) +	{ +		char_t buf[64]; +		char_t* end = buf + sizeof(buf) / sizeof(buf[0]); +		char_t* begin = integer_to_string<unsigned long>(buf, end, value, false); + +		return strcpy_insitu(dest, header, header_mask, begin, end - begin); +	} + +	template <typename String, typename Header>  	PUGI__FN bool set_value_convert(String& dest, Header& header, uintptr_t header_mask, float value)  	{  		char buf[128]; @@ -5154,6 +5174,18 @@ namespace pugi  		return *this;  	} +	PUGI__FN xml_attribute& xml_attribute::operator=(long rhs) +	{ +		set_value(rhs); +		return *this; +	} + +	PUGI__FN xml_attribute& xml_attribute::operator=(unsigned long rhs) +	{ +		set_value(rhs); +		return *this; +	} +  	PUGI__FN xml_attribute& xml_attribute::operator=(double rhs)  	{  		set_value(rhs); @@ -5214,6 +5246,20 @@ namespace pugi  		return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs);  	} +	PUGI__FN bool xml_attribute::set_value(long rhs) +	{ +		if (!_attr) return false; + +		return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); +	} + +	PUGI__FN bool xml_attribute::set_value(unsigned long rhs) +	{ +		if (!_attr) return false; + +		return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); +	} +  	PUGI__FN bool xml_attribute::set_value(double rhs)  	{  		if (!_attr) return false; @@ -6355,6 +6401,20 @@ namespace pugi  		return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;  	} +	PUGI__FN bool xml_text::set(long rhs) +	{ +		xml_node_struct* dn = _data_new(); + +		return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; +	} + +	PUGI__FN bool xml_text::set(unsigned long rhs) +	{ +		xml_node_struct* dn = _data_new(); + +		return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; +	} +  	PUGI__FN bool xml_text::set(float rhs)  	{  		xml_node_struct* dn = _data_new(); @@ -6410,6 +6470,18 @@ namespace pugi  		return *this;  	} +	PUGI__FN xml_text& xml_text::operator=(long rhs) +	{ +		set(rhs); +		return *this; +	} + +	PUGI__FN xml_text& xml_text::operator=(unsigned long rhs) +	{ +		set(rhs); +		return *this; +	} +  	PUGI__FN xml_text& xml_text::operator=(double rhs)  	{  		set(rhs); diff --git a/src/pugixml.hpp b/src/pugixml.hpp index 5d5fe2b..09bd692 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -359,6 +359,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); @@ -372,6 +374,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); @@ -706,6 +710,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); @@ -719,6 +725,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); | 
