Unsigned integer support for attributes (as_uint, operator=)

git-svn-id: http://pugixml.googlecode.com/svn/trunk@101 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
arseny.kapoulkine 2009-01-05 22:47:35 +00:00
parent 81ef99a27b
commit 5a2fa3fe50
2 changed files with 31 additions and 0 deletions

View File

@ -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];

View File

@ -458,6 +458,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.
*
@ -505,6 +513,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);