void set(string s) { switch(type) { case boolean_t: *(bool*)data = (s == "true"); break; case signed_t: *(signed*)data = strsigned(s); break; case unsigned_t: *(unsigned*)data = strunsigned(s); break; case double_t: *(double*)data = strdouble(s); break; case string_t: trim(s, "\""); *(string*)data = s; break; } }
template<> inline string to_string<double> (double v) { return strdouble(v); }
string strdouble(double value) { string temp; temp.reserve(strdouble(0, value)); strdouble(temp(), value); return temp; }
string& string::append(double value) { append(strdouble(value)); return *this; }