From 01d8a2405191b931cc44e18ec5379e9846b45849 Mon Sep 17 00:00:00 2001
From: "arseny.kapoulkine"
 <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640>
Date: Thu, 17 Sep 2009 18:02:21 +0000
Subject: [PATCH] Added xml_attribute::set_value overloads

git-svn-id: http://pugixml.googlecode.com/svn/trunk@127 99668b35-9821-0410-8761-19e4c4f06640
---
 src/pugixml.cpp | 40 ++++++++++++++++++++++++++++++----------
 src/pugixml.hpp | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index 2bb0b7b6..c1797c5f 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -1875,31 +1875,25 @@ namespace pugi
 	
 	xml_attribute& xml_attribute::operator=(int rhs)
 	{
-		char buf[128];
-		sprintf(buf, "%d", rhs);
-		set_value(buf);
+		set_value(rhs);
 		return *this;
 	}
 
 	xml_attribute& xml_attribute::operator=(unsigned int rhs)
 	{
-		char buf[128];
-		sprintf(buf, "%u", rhs);
-		set_value(buf);
+		set_value(rhs);
 		return *this;
 	}
 
 	xml_attribute& xml_attribute::operator=(double rhs)
 	{
-		char buf[128];
-		sprintf(buf, "%g", rhs);
-		set_value(buf);
+		set_value(rhs);
 		return *this;
 	}
 	
 	xml_attribute& xml_attribute::operator=(bool rhs)
 	{
-		set_value(rhs ? "true" : "false");
+		set_value(rhs);
 		return *this;
 	}
 
@@ -1925,6 +1919,32 @@ namespace pugi
 		return res;
 	}
 
+	bool xml_attribute::set_value(int rhs)
+	{
+		char buf[128];
+		sprintf(buf, "%d", rhs);
+		return set_value(buf);
+	}
+
+	bool xml_attribute::set_value(unsigned int rhs)
+	{
+		char buf[128];
+		sprintf(buf, "%u", rhs);
+		return set_value(buf);
+	}
+
+	bool xml_attribute::set_value(double rhs)
+	{
+		char buf[128];
+		sprintf(buf, "%g", rhs);
+		return set_value(buf);
+	}
+	
+	bool xml_attribute::set_value(bool rhs)
+	{
+		return set_value(rhs ? "true" : "false");
+	}
+
 #ifdef __BORLANDC__
 	bool operator&&(const xml_attribute& lhs, bool rhs)
 	{
diff --git a/src/pugixml.hpp b/src/pugixml.hpp
index 6228b79a..0b141488 100644
--- a/src/pugixml.hpp
+++ b/src/pugixml.hpp
@@ -583,6 +583,38 @@ namespace pugi
 		 */
 		bool set_value(const char* rhs);
 
+		/**
+		 * Set attribute value to \a rhs.
+		 *
+		 * \param rhs - new attribute value
+		 * \return success flag (call fails if attribute is empty or there is not enough memory)
+		 */
+		bool set_value(int rhs);
+
+		/**
+		 * Set attribute value to \a rhs.
+		 *
+		 * \param rhs - new attribute value
+		 * \return success flag (call fails if attribute is empty or there is not enough memory)
+		 */
+		bool set_value(unsigned int rhs);
+
+		/**
+		 * Set attribute value to \a rhs.
+		 *
+		 * \param rhs - new attribute value
+		 * \return success flag (call fails if attribute is empty or there is not enough memory)
+		 */
+		bool set_value(double rhs);
+
+		/**
+		 * Set attribute value to either 'true' or 'false' (depends on whether \a rhs is true or false).
+		 *
+		 * \param rhs - new attribute value
+		 * \return success flag (call fails if attribute is empty or there is not enough memory)
+		 */
+		bool set_value(bool rhs);
+
 	public:
 		/**
 		 * Check if attribute is empty.
-- 
GitLab