00001
00002
00003 #ifndef NMSTL_H_NMSTL
00004 #define NMSTL_H_NMSTL
00005
00119 #define NMSTL_NAMESPACE_BEGIN namespace std {}; namespace nmstl { using namespace ::std;
00120 #define NMSTL_NAMESPACE_END };
00121
00122 #include <string>
00123 #include <cstdio>
00124 #include <typeinfo>
00125
00126 NMSTL_NAMESPACE_BEGIN;
00127
00128 template<class T>
00129 inline string to_string(const T& t) {
00130 char buf[64];
00131
00132 string out = "{";
00133 out += typeid(T).name();
00134 out += ": ";
00135 sprintf(buf, "%d bytes @ %p}", sizeof t, &t);
00136 out += buf;
00137
00138 return out;
00139 }
00140
00141 template<class T>
00142 inline string to_string(const T*& t) {
00143 return string("&(") + to_string(*t) + to_string(")");
00144 }
00145
00146 inline string to_string(const char* ch) {
00147 return string(ch);
00148 }
00149
00150 inline string to_string(const string& s) {
00151 return s;
00152 }
00153
00154 inline string to_string(const int& i) {
00155 char buf[16];
00156 sprintf(buf, "%d", i);
00157 return buf;
00158 }
00159
00160 inline string to_string(const unsigned int& i) {
00161 char buf[16];
00162 sprintf(buf, "%u", i);
00163 return buf;
00164 }
00165
00166 inline string to_string(const short& i) {
00167 char buf[16];
00168 sprintf(buf, "%d", i);
00169 return buf;
00170 }
00171
00172 inline string to_string(const unsigned short& i) {
00173 char buf[16];
00174 sprintf(buf, "%u", i);
00175 return buf;
00176 }
00177
00178 inline string to_string(const double& d) {
00179 char buf[16];
00180 sprintf(buf, "%f", d);
00181 return buf;
00182 }
00183
00184 NMSTL_NAMESPACE_END;
00185
00186 #endif