From 5a2fa3fe5079c8e917f7938602d3def7df71f210 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Mon, 5 Jan 2009 22:47:35 +0000 Subject: Unsigned integer support for attributes (as_uint, operator=) git-svn-id: http://pugixml.googlecode.com/svn/trunk@101 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 15 +++++++++++++++ src/pugixml.hpp | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) (limited to 'src') 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(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 @@ -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); -- cgit v1.2.3