]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add Template itoa to convert integer to char*
authorpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 26 Dec 2006 05:55:45 +0000 (05:55 +0000)
committerpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 26 Dec 2006 05:55:45 +0000 (05:55 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6119 e03df62e-2008-0410-955e-edbf42e46eb7

include/inspircd.h

index 3d9002f53e053ffc57317bdedbd70b5549f52a98..d3d42438423a6abbf565051869064291c1356482 100644 (file)
@@ -77,6 +77,25 @@ template<typename T> inline long ConvToInt(const T &in)
        return atoi(tmp.str().c_str());
 }
 
+/** Template function to convert integer to char, storing result in *res and
+ * also returning the pointer to res. Based on Stuart Lowe's C/C++ Pages.
+ */
+template<typename T, typename V, typename R> inline char* itoa(const T &in, V *res, R base)
+{
+       if (base < 2 || base > 16) { *res = 0; return res; }
+       char* out = res;
+       int quotient = in;
+       while (quotient) {
+               *out = "0123456789abcdef"[ std::abs( quotient % base ) ];
+               ++out;
+               quotient /= base;
+       }
+       if ( in < 0 && base == 10) *out++ = '-';
+       std::reverse( res, out );
+       *out = 0;
+       return res;
+}
+
 /** This class contains various STATS counters
  * It is used by the InspIRCd class, which internally
  * has an instance of it.