diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/inspircd.h | 19 |
1 files changed, 19 insertions, 0 deletions
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<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. |