From: peavey Date: Tue, 26 Dec 2006 05:55:45 +0000 (+0000) Subject: Add Template itoa to convert integer to char* X-Git-Tag: v2.0.23~6263 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=79c0364d54e9f0494c2e8da855cf09193e2d4704;p=user%2Fhenk%2Fcode%2Finspircd.git Add Template itoa to convert integer to char* git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6119 e03df62e-2008-0410-955e-edbf42e46eb7 --- diff --git a/include/inspircd.h b/include/inspircd.h index 3d9002f53..d3d424384 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -77,6 +77,25 @@ template 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 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.