diff options
| -rw-r--r-- | src/pugixml.cpp | 15 | ||||
| -rw-r--r-- | src/pugixml.hpp | 16 | 
2 files changed, 31 insertions, 0 deletions
| diff --git a/src/pugixml.cpp b/src/pugixml.cpp index fbb95f1..e0d74aa 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -1676,6 +1676,13 @@ namespace pugi  		return atoi(_attr->value);
  	}
 +	unsigned int xml_attribute::as_uint() const
 +	{
 +		if(empty() || !_attr->value) return 0;
 +		int result = atoi(_attr->value);
 +		return result < 0 ? 0 : static_cast<unsigned int>(result);
 +	}
 +
  	double xml_attribute::as_double() const
  	{
  		if(empty() || !_attr->value) return 0.0;
 @@ -1740,6 +1747,14 @@ namespace pugi  		return *this;
  	}
 +	xml_attribute& xml_attribute::operator=(unsigned int rhs)
 +	{
 +		char buf[128];
 +		sprintf(buf, "%u", rhs);
 +		set_value(buf);
 +		return *this;
 +	}
 +
  	xml_attribute& xml_attribute::operator=(double rhs)
  	{
  		char buf[128];
 diff --git a/src/pugixml.hpp b/src/pugixml.hpp index 6adbeca..5b317e2 100644 --- a/src/pugixml.hpp +++ b/src/pugixml.hpp @@ -459,6 +459,14 @@ namespace pugi  		int as_int() const;  		/** +		 * Cast attribute value as unsigned int. +		 * +		 * \return attribute value as unsigned int, or 0 if conversion did not succeed or attribute is empty +		 * \note values out of non-negative int range (usually [0, 2^31-1]) get clamped to range boundaries +		 */ +		unsigned int as_uint() const; + +		/**  		 * Cast attribute value as double.  		 *  		 * \return attribute value as double, or 0.0 if conversion did not succeed or attribute is empty @@ -506,6 +514,14 @@ namespace pugi           * \param rhs - new attribute value           * \return self           */ +		xml_attribute& operator=(unsigned int rhs); + +		/** +         * Set attribute value to \a rhs. +         * +         * \param rhs - new attribute value +         * \return self +         */  		xml_attribute& operator=(double rhs);  		/** | 
