[DEV] change idea => std::to_string ===> etk::to_string

This commit is contained in:
Edouard DUPIN 2014-08-13 07:47:42 +02:00
parent e56a7466c6
commit 28c433bb4e
6 changed files with 313 additions and 467 deletions

View File

@ -365,7 +365,7 @@ namespace etk {
std::string std::to_string(const vec2& _obj) { template<> std::string std::to_string<vec2>(const vec2& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -374,11 +374,11 @@ std::string std::to_string(const vec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const vec2& _obj) { template<> std::u32string std::to_u32string<vec2>(const vec2& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const ivec2& _obj) { template<> std::string std::to_string<ivec2>(const ivec2& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -387,11 +387,11 @@ std::string std::to_string(const ivec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const ivec2& _obj) { template<> std::u32string std::to_u32string<ivec2>(const ivec2& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const uivec2& _obj) { template<> std::string std::to_string<uivec2>(const uivec2& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -400,11 +400,11 @@ std::string std::to_string(const uivec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const uivec2& _obj) { template<> std::u32string std::to_u32string<uivec2>(const uivec2& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const bvec2& _obj) { template<> std::string std::to_string<bvec2>(const bvec2& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -413,39 +413,39 @@ std::string std::to_string(const bvec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const bvec2& _obj) { template<> std::u32string std::to_u32string<bvec2>(const bvec2& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
bool std::from_string(vec2& _variableRet, const std::string& _value) { template<> bool std::from_string<vec2>(vec2& _variableRet, const std::string& _value) {
_variableRet = vec2(_value); _variableRet = vec2(_value);
return true; return true;
} }
bool std::from_string(vec2& _variableRet, const std::u32string& _value) { template<> bool std::from_string<vec2>(vec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(ivec2& _variableRet, const std::string& _value) { template<> bool std::from_string<ivec2>(ivec2& _variableRet, const std::string& _value) {
_variableRet = ivec2(_value); _variableRet = ivec2(_value);
return true; return true;
} }
bool std::from_string(ivec2& _variableRet, const std::u32string& _value) { template<> bool std::from_string<ivec2>(ivec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(uivec2& _variableRet, const std::string& _value) { template<> bool std::from_string<uivec2>(uivec2& _variableRet, const std::string& _value) {
_variableRet = uivec2(_value); _variableRet = uivec2(_value);
return true; return true;
} }
bool std::from_string(uivec2& _variableRet, const std::u32string& _value) { template<> bool std::from_string<uivec2>(uivec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(bvec2& _variableRet, const std::string& _value) { template<> bool std::from_string<bvec2>(bvec2& _variableRet, const std::string& _value) {
_variableRet = bvec2(_value); _variableRet = bvec2(_value);
return true; return true;
} }
bool std::from_string(bvec2& _variableRet, const std::u32string& _value) { template<> bool std::from_string<bvec2>(bvec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }

View File

@ -374,25 +374,6 @@ inline vec2 vec2ClipInt64(const vec2& _val) {
return vec2((int64_t)_val.x(), (int64_t)_val.y()); return vec2((int64_t)_val.x(), (int64_t)_val.y());
} }
namespace std {
std::string to_string(const vec2& _obj);
std::string to_string(const bvec2& _obj);
std::string to_string(const ivec2& _obj);
std::string to_string(const uivec2& _obj);
std::u32string to_u32string(const vec2& _obj);
std::u32string to_u32string(const bvec2& _obj);
std::u32string to_u32string(const ivec2& _obj);
std::u32string to_u32string(const uivec2& _obj);
bool from_string(vec2& _variableRet, const std::string& _value);
bool from_string(bvec2& _variableRet, const std::string& _value);
bool from_string(ivec2& _variableRet, const std::string& _value);
bool from_string(uivec2& _variableRet, const std::string& _value);
bool from_string(vec2& _variableRet, const std::u32string& _value);
bool from_string(bvec2& _variableRet, const std::u32string& _value);
bool from_string(ivec2& _variableRet, const std::u32string& _value);
bool from_string(uivec2& _variableRet, const std::u32string& _value);
};
namespace etk { namespace etk {
std::ostream& operator <<(std::ostream& _os, const std::vector<vec2 >& _obj); std::ostream& operator <<(std::ostream& _os, const std::vector<vec2 >& _obj);
//! @previous //! @previous

View File

@ -110,7 +110,7 @@ vec3 quaternionToEulerXYZ(const btQuaternion& _quat) {
} }
std::string std::to_string(const vec3& _obj) { template<> std::string std::to_string<vec3>(const vec3& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -121,11 +121,11 @@ std::string std::to_string(const vec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const vec3& _obj) { template<> std::u32string std::to_u32string<vec3>(const vec3& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const ivec3& _obj) { template<> std::string std::to_string<ivec3>(const ivec3& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -136,11 +136,11 @@ std::string std::to_string(const ivec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const ivec3& _obj) { template<> std::u32string std::to_u32string<ivec3>(const ivec3& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const uivec3& _obj) { template<> std::string std::to_string<uivec3>(const uivec3& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -151,11 +151,11 @@ std::string std::to_string(const uivec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const uivec3& _obj) { template<> std::u32string std::to_u32string<uivec3>(const uivec3& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
std::string std::to_string(const bvec3& _obj) { template<> std::string std::to_string<bvec3>(const bvec3& _obj) {
std::string str; std::string str;
str = "("; str = "(";
str += std::to_string(_obj.x()); str += std::to_string(_obj.x());
@ -166,11 +166,11 @@ std::string std::to_string(const bvec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const bvec3& _obj) { template<> std::u32string std::to_u32string<bvec3>(const bvec3& _obj) {
return std::to_u32string(std::to_string(_obj)); return std::to_u32string(std::to_string(_obj));
} }
bool std::from_string(vec3& _variableRet, const std::string& _value) { template<> bool std::from_string<vec3>(vec3& _variableRet, const std::string& _value) {
float floats[3]; float floats[3];
floats[0] = 0; floats[0] = 0;
floats[1] = 0; floats[1] = 0;
@ -209,11 +209,11 @@ bool std::from_string(vec3& _variableRet, const std::string& _value) {
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet); TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true; return true;
} }
bool std::from_string(vec3& _variableRet, const std::u32string& _value) { template<> bool std::from_string<vec3>(vec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(ivec3& _variableRet, const std::string& _value) { template<> bool std::from_string<ivec3>(ivec3& _variableRet, const std::string& _value) {
int32_t floats[3]; int32_t floats[3];
floats[0] = 0; floats[0] = 0;
floats[1] = 0; floats[1] = 0;
@ -252,11 +252,11 @@ bool std::from_string(ivec3& _variableRet, const std::string& _value) {
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet); TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true; return true;
} }
bool std::from_string(ivec3& _variableRet, const std::u32string& _value) { template<> bool std::from_string<ivec3>(ivec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(uivec3& _variableRet, const std::string& _value) { template<> bool std::from_string<uivec3>(uivec3& _variableRet, const std::string& _value) {
uint32_t floats[3]; uint32_t floats[3];
floats[0] = 0; floats[0] = 0;
floats[1] = 0; floats[1] = 0;
@ -295,11 +295,11 @@ bool std::from_string(uivec3& _variableRet, const std::string& _value) {
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet); TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true; return true;
} }
bool std::from_string(uivec3& _variableRet, const std::u32string& _value) { template<> bool std::from_string<uivec3>(uivec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }
bool std::from_string(bvec3& _variableRet, const std::string& _value) { template<> bool std::from_string<bvec3>(bvec3& _variableRet, const std::string& _value) {
bool floats[3]; bool floats[3];
floats[0] = false; floats[0] = false;
floats[1] = false; floats[1] = false;
@ -338,6 +338,6 @@ bool std::from_string(bvec3& _variableRet, const std::string& _value) {
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet); TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true; return true;
} }
bool std::from_string(bvec3& _variableRet, const std::u32string& _value) { template<> bool std::from_string<bvec3>(bvec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value)); return from_string(_variableRet, std::to_string(_value));
} }

View File

@ -470,25 +470,6 @@ inline vec3 vec3ClipInt64(const vec3& val) {
return vec3((int64_t)val.x(), (int64_t)val.y(), (int64_t)val.z()); return vec3((int64_t)val.x(), (int64_t)val.y(), (int64_t)val.z());
} }
namespace std {
std::string to_string(const vec3& _obj);
std::string to_string(const bvec3& _obj);
std::string to_string(const ivec3& _obj);
std::string to_string(const uivec3& _obj);
std::u32string to_u32string(const vec3& _obj);
std::u32string to_u32string(const bvec3& _obj);
std::u32string to_u32string(const ivec3& _obj);
std::u32string to_u32string(const uivec3& _obj);
bool from_string(vec3& _variableRet, const std::string& _value);
bool from_string(bvec3& _variableRet, const std::string& _value);
bool from_string(ivec3& _variableRet, const std::string& _value);
bool from_string(uivec3& _variableRet, const std::string& _value);
bool from_string(vec3& _variableRet, const std::u32string& _value);
bool from_string(bvec3& _variableRet, const std::u32string& _value);
bool from_string(ivec3& _variableRet, const std::u32string& _value);
bool from_string(uivec3& _variableRet, const std::u32string& _value);
};
namespace etk { namespace etk {
std::ostream& operator <<(std::ostream& _os, const std::vector<vec3>& _obj); std::ostream& operator <<(std::ostream& _os, const std::vector<vec3>& _obj);
//! @previous //! @previous

View File

@ -12,12 +12,12 @@
#undef __class__ #undef __class__
#define __class__ "u32char" #define __class__ "u32char"
std::ostream& std::operator <<(std::ostream& _os, const std::string& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const std::string& _obj) {
_os << _obj.c_str(); _os << _obj.c_str();
return _os; return _os;
} }
std::ostream& std::operator <<(std::ostream& _os, const std::vector<std::string>& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const std::vector<std::string>& _obj) {
_os << "{"; _os << "{";
for (size_t iii=0; iii< _obj.size(); iii++) { for (size_t iii=0; iii< _obj.size(); iii++) {
if (iii>0) { if (iii>0) {
@ -29,12 +29,12 @@ std::ostream& std::operator <<(std::ostream& _os, const std::vector<std::string>
return _os; return _os;
} }
std::ostream& std::operator <<(std::ostream& _os, const std::u32string& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const std::u32string& _obj) {
_os << std::to_string(_obj).c_str(); _os << etk::to_string(_obj).c_str();
return _os; return _os;
} }
std::ostream& std::operator <<(std::ostream& _os, const std::vector<std::u32string>& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const std::vector<std::u32string>& _obj) {
_os << "{"; _os << "{";
for (size_t iii=0; iii< _obj.size(); iii++) { for (size_t iii=0; iii< _obj.size(); iii++) {
if (iii>0) { if (iii>0) {
@ -263,9 +263,9 @@ bool utf8::theoricFirst(const char _input) {
#undef __class__ #undef __class__
#define __class__ "std" #define __class__ "etk"
std::string std::to_string(const std::u32string& _input) { template<> std::string etk::to_string<std::u32string>(const std::u32string& _input) {
std::string out; std::string out;
for (size_t iii=0; iii<_input.size(); ++iii) { for (size_t iii=0; iii<_input.size(); ++iii) {
char output[10]; char output[10];
@ -275,10 +275,10 @@ std::string std::to_string(const std::u32string& _input) {
return out; return out;
} }
std::u32string std::to_u32string(const std::string& _input) { template<> std::u32string etk::to_u32string<std::string>(const std::string& _input) {
return std::to_u32string(_input.c_str()); return etk::to_u32string(_input.c_str());
} }
std::u32string std::to_u32string(const char* _input) { template<> std::u32string etk::to_u32string<char*>(const char*& _input) {
if (_input == NULL) { if (_input == NULL) {
return U""; return U"";
} }
@ -331,35 +331,41 @@ std::u32string std::to_u32string(const char* _input) {
} }
std::u32string std::to_u32string(int _val) { template<> std::u32string etk::to_u32string<int8_t>(int8_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(long _val) { template<> std::u32string etk::to_u32string<int16_t>(int16_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(long long _val) { template<> std::u32string etk::to_u32string<int32_t>(int32_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(unsigned _val) { template<> std::u32string etk::to_u32string<int64_t>(int64_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(unsigned long _val) { template<> std::u32string etk::to_u32string<uint8_t>(uint8_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(unsigned long long _val) { template<> std::u32string etk::to_u32string<uint16_t>(uint16_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(float _val) { template<> std::u32string etk::to_u32string<uint32_t>(uint32_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(double _val) { template<> std::u32string etk::to_u32string<uint64_t>(uint64_t _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
}; };
std::u32string std::to_u32string(long double _val) { template<> std::u32string etk::to_u32string<float>(float _val) {
return std::to_u32string(std::to_string(_val)); return etk::to_u32string(etk::to_string(_val));
};
template<> std::u32string etk::to_u32string<double>(double _val) {
return etk::to_u32string(etk::to_string(_val));
};
template<> std::u32string etk::to_u32string<long double>(long double _val) {
return etk::to_u32string(etk::to_string(_val));
}; };
bool std::stob(const std::u32string& _str) { bool std::string_to_bool(const std::u32string& _str) {
if( true == compare_no_case(_str, U"true") if( true == compare_no_case(_str, U"true")
|| true == compare_no_case(_str, U"enable") || true == compare_no_case(_str, U"enable")
|| true == compare_no_case(_str, U"yes") || true == compare_no_case(_str, U"yes")
@ -369,39 +375,41 @@ bool std::stob(const std::u32string& _str) {
return false; return false;
} }
double std::stod(const std::u32string& _str, size_t* _idx) { double etk::string_to_double(const std::u32string& _str) {
return std::stod(std::to_string(_str), _idx); return std::stod(etk::to_string(_str), _idx);
}
long double etk::string_to_long_double(const std::u32string& _str) {
return std::stold(etk::to_string(_str), _idx);
}
float etk::string_to_float(const std::u32string& _str) {
return std::stof(etk::to_string(_str), _idx);
}
int8_t etk::string_to_int8_t(const std::u32string& _str, int _base) {
return std::stoi(etk::to_string(_str), _idx, _base);
}
int16_t etk::string_to_int16_t(const std::u32string& _str, int _base) {
return std::stoi(etk::to_string(_str), _idx, _base);
}
int32_t etk::string_to_int32_t(const std::u32string& _str, int _base) {
return std::stoi(etk::to_string(_str), _idx, _base);
}
int64_t etk::string_to_int64_t(const std::u32string& _str, int _base) {
return std::stoll(etk::to_string(_str), _idx, _base);
}
uint8_t etk::string_to_uint8_t(const std::u32string& _str, int _base) {
return std::stoul(etk::to_string(_str), _idx, _base);
}
uint16_t etk::string_to_uint16_t(const std::u32string& _str, int _base) {
return std::stoul(etk::to_string(_str), _idx, _base);
}
uint32_t etk::string_to_uint32_t(const std::u32string& _str, int _base) {
return std::stoul(etk::to_string(_str), _idx, _base);
}
uint64_t etk::string_to_uint64_t(const std::u32string& _str, int _base) {
return std::stoull(etk::to_string(_str), _idx, _base);
} }
float std::stof(const std::u32string& _str, size_t* _idx) { bool etk::string_to_bool(const std::string& _str) {
return std::stof(std::to_string(_str), _idx);
}
int std::stoi(const std::u32string& _str, size_t* _idx, int _base) {
return std::stoi(std::to_string(_str), _idx, _base);
}
long std::stol(const std::u32string& _str, size_t* _idx, int _base) {
return std::stol(std::to_string(_str), _idx, _base);
}
long double std::stold(const std::u32string& _str, size_t* _idx) {
return std::stold(std::to_string(_str), _idx);
}
long long std::stoll(const std::u32string& _str, size_t* _idx, int _base) {
return std::stoll(std::to_string(_str), _idx, _base);
}
unsigned long std::stoul(const std::u32string& _str, size_t* _idx, int _base ) {
return std::stoul(std::to_string(_str), _idx, _base);
}
unsigned long long std::stoull(const std::u32string& _str, size_t* _idx, int _base ) {
return std::stoull(std::to_string(_str), _idx, _base);
}
bool std::stob(const std::string& _str) {
if( true == compare_no_case(_str, "true") if( true == compare_no_case(_str, "true")
|| true == compare_no_case(_str, "enable") || true == compare_no_case(_str, "enable")
|| true == compare_no_case(_str, "yes") || true == compare_no_case(_str, "yes")
@ -411,68 +419,76 @@ bool std::stob(const std::string& _str) {
return false; return false;
} }
std::string std::to_string(bool _val) { template<> std::string etk::to_string<bool>(const bool& _val) {
if (_val == true) { if (_val == true) {
return "true"; return "true";
} }
return "false"; return "false";
} }
#if (defined(__TARGET_OS__Android)) template<> std::string etk::to_string<int8_t>(const int8_t& _val) {
std::string std::to_string(int _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%d", _val); sprintf(tmpVal, "%d", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(long _val) { template<> std::string etk::to_string<int16_t>(const int16_t& _val) {
char tmpVal[256];
sprintf(tmpVal, "%d", _val);
return tmpVal;
}
template<> std::string etk::to_string<int32_t>(const int32_t& _val) {
char tmpVal[256];
sprintf(tmpVal, "%d", _val);
return tmpVal;
}
template<> std::string etk::to_string<int64_t>(const int64_t& _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%ld", _val); sprintf(tmpVal, "%ld", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(long long _val) { template<> std::string etk::to_string<int8_t>(const int8_t& _val) {
char tmpVal[256];
sprintf(tmpVal, "%lld", _val);
return tmpVal;
}
std::string std::to_string(unsigned _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%u", _val); sprintf(tmpVal, "%u", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(unsigned long _val) { template<> std::string etk::to_string<int16_t>(const int16_t& _val) {
char tmpVal[256];
sprintf(tmpVal, "%u", _val);
return tmpVal;
}
template<> std::string etk::to_string<int32_t>(const int32_t& _val) {
char tmpVal[256];
sprintf(tmpVal, "%u", _val);
return tmpVal;
}
template<> std::string etk::to_string<int64_t>(const int64_t& _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%lu", _val); sprintf(tmpVal, "%lu", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(unsigned long long _val) { template<> std::string etk::to_string<float>(const float& _val) {
char tmpVal[256];
sprintf(tmpVal, "%llu", _val);
return tmpVal;
}
std::string std::to_string(float _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%f", _val); sprintf(tmpVal, "%f", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(double _val) { template<> std::string etk::to_string<double>(const double& _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%f", _val); sprintf(tmpVal, "%f", _val);
return tmpVal; return tmpVal;
} }
std::string std::to_string(long double _val) { template<> std::string etk::to_string<long double>(const long double& _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%lf", _val); sprintf(tmpVal, "%lf", _val);
return tmpVal; return tmpVal;
} }
#endif
std::u32string std::to_u32string(bool _val) { template<> std::u32string etk::to_u32string<bool>(const bool& _val) {
if (_val == true) { if (_val == true) {
return U"true"; return U"true";
} }
return U"false"; return U"false";
} }
bool std::compare_no_case(const std::u32string& _obj, const std::u32string& _val) { bool etk::compare_no_case(const std::u32string& _obj, const std::u32string& _val) {
if (_val.size() != _obj.size()) { if (_val.size() != _obj.size()) {
return false; return false;
} }
@ -484,7 +500,7 @@ bool std::compare_no_case(const std::u32string& _obj, const std::u32string& _val
return true; return true;
} }
bool std::compare_no_case(const std::string& _obj, const std::string& _val) { bool etk::compare_no_case(const std::string& _obj, const std::string& _val) {
if (_val.size() != _obj.size()) { if (_val.size() != _obj.size()) {
return false; return false;
} }
@ -549,34 +565,34 @@ static char32_t localToLower(char32_t _input) {
} }
std::string std::tolower(std::string _obj) { std::string etk::tolower(std::string _obj) {
for(size_t iii=0 ; iii<_obj.size() ; iii++) { for(size_t iii=0 ; iii<_obj.size() ; iii++) {
_obj[iii] = std::tolower(_obj[iii]); _obj[iii] = std::tolower(_obj[iii]);
} }
return _obj; return _obj;
} }
std::u32string std::tolower(std::u32string _obj) { std::u32string etk::tolower(std::u32string _obj) {
for(size_t iii=0 ; iii<_obj.size() ; iii++) { for(size_t iii=0 ; iii<_obj.size() ; iii++) {
_obj[iii] = localToLower(_obj[iii]); _obj[iii] = localToLower(_obj[iii]);
} }
return _obj; return _obj;
} }
std::string std::toupper(std::string _obj) { std::string etk::toupper(std::string _obj) {
for(size_t iii=0 ; iii<_obj.size() ; iii++) { for(size_t iii=0 ; iii<_obj.size() ; iii++) {
_obj[iii] = std::toupper(_obj[iii]); _obj[iii] = std::toupper(_obj[iii]);
} }
return _obj; return _obj;
} }
std::u32string std::toupper(std::u32string _obj) { std::u32string etk::toupper(std::u32string _obj) {
for(size_t iii=0 ; iii<_obj.size() ; iii++) { for(size_t iii=0 ; iii<_obj.size() ; iii++) {
_obj[iii] = localToUpper(_obj[iii]); _obj[iii] = localToUpper(_obj[iii]);
} }
return _obj; return _obj;
} }
bool std::end_with(const std::string& _obj, const std::string& _val, bool _caseSensitive) { bool etk::end_with(const std::string& _obj, const std::string& _val, bool _caseSensitive) {
if (_val.size() == 0) { if (_val.size() == 0) {
return false; return false;
} }
@ -603,7 +619,7 @@ bool std::end_with(const std::string& _obj, const std::string& _val, bool _caseS
return true; return true;
} }
bool std::end_with(const std::u32string& _obj, const std::u32string& _val, bool _caseSensitive) { bool etk::end_with(const std::u32string& _obj, const std::u32string& _val, bool _caseSensitive) {
if (_val.size() == 0) { if (_val.size() == 0) {
return false; return false;
} }
@ -630,7 +646,7 @@ bool std::end_with(const std::u32string& _obj, const std::u32string& _val, bool
return true; return true;
} }
bool std::start_with(const std::string& _obj, const std::string& _val, bool _caseSensitive) { bool etk::start_with(const std::string& _obj, const std::string& _val, bool _caseSensitive) {
if (_val.size() == 0) { if (_val.size() == 0) {
return false; return false;
} }
@ -657,7 +673,7 @@ bool std::start_with(const std::string& _obj, const std::string& _val, bool _cas
return true; return true;
} }
bool std::start_with(const std::u32string& _obj, const std::u32string& _val, bool _caseSensitive) { bool etk::start_with(const std::u32string& _obj, const std::u32string& _val, bool _caseSensitive) {
if (_val.size() == 0) { if (_val.size() == 0) {
return false; return false;
} }
@ -684,7 +700,7 @@ bool std::start_with(const std::u32string& _obj, const std::u32string& _val, boo
return true; return true;
} }
std::u32string std::replace(const std::u32string& _obj, char32_t _val, char32_t _replace) { std::u32string etk::replace(const std::u32string& _obj, char32_t _val, char32_t _replace) {
std::u32string copy(_obj); std::u32string copy(_obj);
for( size_t iii = 0; for( size_t iii = 0;
iii < copy.size(); iii < copy.size();
@ -696,7 +712,7 @@ std::u32string std::replace(const std::u32string& _obj, char32_t _val, char32_t
return copy; return copy;
} }
std::string std::replace(const std::string& _obj, char _val, char _replace) { std::string etk::replace(const std::string& _obj, char _val, char _replace) {
std::string copy(_obj); std::string copy(_obj);
for( size_t iii = 0; for( size_t iii = 0;
iii < copy.size(); iii < copy.size();
@ -708,7 +724,7 @@ std::string std::replace(const std::string& _obj, char _val, char _replace) {
return copy; return copy;
} }
std::string std::extract_line(const std::string& _obj, int32_t _pos) { std::string etk::extract_line(const std::string& _obj, int32_t _pos) {
// search back : '\n' // search back : '\n'
size_t startPos = _obj.rfind('\n', _pos); size_t startPos = _obj.rfind('\n', _pos);
if ((int64_t)startPos == (int64_t)_pos) { if ((int64_t)startPos == (int64_t)_pos) {
@ -737,7 +753,7 @@ std::string std::extract_line(const std::string& _obj, int32_t _pos) {
return std::string(_obj, startPos, stopPos - startPos); return std::string(_obj, startPos, stopPos - startPos);
} }
std::u32string std::extract_line(const std::u32string& _obj, int32_t _pos) { std::u32string etk::extract_line(const std::u32string& _obj, int32_t _pos) {
// search back : '\n' // search back : '\n'
size_t startPos = _obj.rfind('\n', _pos); size_t startPos = _obj.rfind('\n', _pos);
if ((int64_t)startPos == _pos) { if ((int64_t)startPos == _pos) {
@ -766,7 +782,7 @@ std::u32string std::extract_line(const std::u32string& _obj, int32_t _pos) {
return std::u32string(_obj, startPos, stopPos - startPos); return std::u32string(_obj, startPos, stopPos - startPos);
} }
std::vector<std::string> std::split(const std::string& _input, char _val) { std::vector<std::string> etk::split(const std::string& _input, char _val) {
std::vector<std::string> list; std::vector<std::string> list;
size_t lastStartPos = 0; size_t lastStartPos = 0;
for(size_t iii=0; iii<_input.size(); iii++) { for(size_t iii=0; iii<_input.size(); iii++) {
@ -781,7 +797,7 @@ std::vector<std::string> std::split(const std::string& _input, char _val) {
return list; return list;
} }
std::vector<std::u32string> std::split(const std::u32string& _input, char32_t _val) { std::vector<std::u32string> etk::split(const std::u32string& _input, char32_t _val) {
std::vector<std::u32string> list; std::vector<std::u32string> list;
size_t lastStartPos = 0; size_t lastStartPos = 0;
for(size_t iii=0; iii<_input.size(); iii++) { for(size_t iii=0; iii<_input.size(); iii++) {
@ -796,59 +812,71 @@ std::vector<std::u32string> std::split(const std::u32string& _input, char32_t _v
return list; return list;
} }
#if (defined(__TARGET_OS__Android)) double etk::string_to_double(const std::string& _str) {
double std::stod(const std::string& _str, size_t* _idx) {
double ret = 0; double ret = 0;
sscanf(_str.c_str(), "%Lf", &ret); sscanf(_str.c_str(), "%Lf", &ret);
return ret; return ret;
} }
float std::stof(const std::string& _str, size_t* _idx) { float etk::string_to_float(const std::string& _str) {
float ret = 0; float ret = 0;
sscanf(_str.c_str(), "%f", &ret); sscanf(_str.c_str(), "%f", &ret);
return ret; return ret;
} }
int std::stoi(const std::string& _str, size_t* _idx, int _base) { int8_t etk::string_to_int8_t(const std::string& _str, int _base) {
int ret = 0; int ret = 0;
sscanf(_str.c_str(), "%d", &ret); sscanf(_str.c_str(), "%d", &ret);
return ret; return ret;
} }
int16_t etk::string_to_int16_t(const std::string& _str, int _base) {
long std::stol(const std::string& _str, size_t* _idx, int _base) { int ret = 0;
long ret = 0; sscanf(_str.c_str(), "%d", &ret);
return ret;
}
int32_t etk::string_to_int32_t(const std::string& _str, int _base) {
int ret = 0;
sscanf(_str.c_str(), "%d", &ret);
return ret;
}
int64_t etk::string_to_int64_t(const std::string& _str, int _base) {
int ret = 0;
sscanf(_str.c_str(), "%ld", &ret);
return ret;
}
uint8_t etk::string_to_uint8_t(const std::string& _str, int _base) {
int ret = 0;
sscanf(_str.c_str(), "%d", &ret);
return ret;
}
uint16_t etk::string_to_uint16_t(const std::string& _str, int _base) {
int ret = 0;
sscanf(_str.c_str(), "%d", &ret);
return ret;
}
uint32_t etk::string_to_uint32_t(const std::string& _str, int _base) {
int ret = 0;
sscanf(_str.c_str(), "%d", &ret);
return ret;
}
uint64_t etk::string_to_uint64_t(const std::string& _str, int _base) {
long long ret = 0;
sscanf(_str.c_str(), "%ld", &ret); sscanf(_str.c_str(), "%ld", &ret);
return ret; return ret;
} }
long double std::stold(const std::string& _str, size_t* _idx) { long double etk::string_to_long_double(const std::string& _str) {
long double ret = 0; long double ret = 0;
sscanf(_str.c_str(), "%Lf", &ret); sscanf(_str.c_str(), "%Lf", &ret);
return ret; return ret;
} }
double etk::string_to_double(const std::string& _str) {
long long std::stoll(const std::string& _str, size_t* _idx, int _base) { double ret = 0;
long long ret = 0; sscanf(_str.c_str(), "%Lf", &ret);
sscanf(_str.c_str(), "%lld", &ret);
return ret; return ret;
} }
unsigned long std::stoul(const std::string& _str, size_t* _idx, int _base) { void etk::sort(std::vector<std::string *> &_list) {
unsigned long ret = 0;
sscanf(_str.c_str(), "%lu", &ret);
return ret;
}
unsigned long long std::stoull(const std::string& _str, size_t* _idx, int _base) {
unsigned long long ret = 0;
sscanf(_str.c_str(), "%llu", &ret);
return ret;
}
#endif
void std::sort(std::vector<std::string *> &_list) {
std::vector<std::string *> tmpList(_list); std::vector<std::string *> tmpList(_list);
_list.clear(); _list.clear();
for(size_t iii=0; iii<tmpList.size(); iii++) { for(size_t iii=0; iii<tmpList.size(); iii++) {
@ -864,7 +892,7 @@ void std::sort(std::vector<std::string *> &_list) {
} }
} }
void std::sort(std::vector<std::u32string *> &_list) { void etk::sort(std::vector<std::u32string *> &_list) {
std::vector<std::u32string *> tmpList(_list); std::vector<std::u32string *> tmpList(_list);
_list.clear(); _list.clear();
for(size_t iii=0; iii<tmpList.size(); iii++) { for(size_t iii=0; iii<tmpList.size(); iii++) {
@ -880,132 +908,111 @@ void std::sort(std::vector<std::u32string *> &_list) {
} }
} }
bool etk::from_string<float>(float& _variableRet, const std::string& _value) {
/*
template<> bool std::from_string<size_t>(size_t& _variableRet, const std::string& _value) {
_variableRet = stod(_value);
return true;
}
template<> bool std::from_string<size_t>(size_t& _variableRet, const std::u32string& _value) {
_variableRet = stod(_value);
return true;
}
*/
bool std::from_string(float& _variableRet, const std::string& _value) {
_variableRet = stof(_value); _variableRet = stof(_value);
return true; return true;
} }
bool std::from_string(float& _variableRet, const std::u32string& _value) { bool etk::from_string<float>(float& _variableRet, const std::u32string& _value) {
_variableRet = stof(_value); _variableRet = stof(_value);
return true; return true;
} }
bool std::from_string(char& _variableRet, const std::string& _value) { bool etk::from_string<int8_t>(int8_t& _variableRet, const std::string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_int8_t(_value);
return true; return true;
} }
bool std::from_string(char& _variableRet, const std::u32string& _value) { bool etk::from_string<int16_t>(int16_t& _variableRet, const std::string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_int16_t(_value);
return true;
}
bool etk::from_string<int32_t>(int32_t& _variableRet, const std::string& _value) {
_variableRet = string_to_int32_t(_value);
return true;
}
bool etk::from_string<int64_t>(int64_t& _variableRet, const std::string& _value) {
_variableRet = string_to_int64_t(_value);
return true;
}
bool etk::from_string<uint8_t>(uint8_t& _variableRet, const std::string& _value) {
_variableRet = string_to_uint8_t(_value);
return true;
}
bool etk::from_string<uint16_t>(uint16_t& _variableRet, const std::string& _value) {
_variableRet = string_to_uint16_t(_value);
return true;
}
bool etk::from_string<uint32_t>(uint32_t& _variableRet, const std::string& _value) {
_variableRet = string_to_uint32_t(_value);
return true;
}
bool etk::from_string<uint64_t>(uint64_t& _variableRet, const std::string& _value) {
_variableRet = string_to_uint64_t(_value);
return true;
}
bool etk::from_string<float>(float& _variableRet, const std::string& _value) {
_variableRet = string_to_float(_value);
return true;
}
bool etk::from_string<double>(double& _variableRet, const std::string& _value) {
_variableRet = string_to_double(_value);
return true;
}
bool etk::from_string<long double>(long double& _variableRet, const std::string& _value) {
_variableRet = string_to_long_double(_value);
return true;
}
bool etk::from_string<bool>(bool& _variableRet, const std::string& _value) {
_variableRet = string_to_bool(_value);
return true; return true;
} }
bool std::from_string(unsigned char& _variableRet, const std::string& _value) { bool etk::from_string<int8_t>(int8_t& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_int8_t(_value);
return true; return true;
} }
bool std::from_string(unsigned char& _variableRet, const std::u32string& _value) { bool etk::from_string<int16_t>(int16_t& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_int16_t(_value);
return true; return true;
} }
bool etk::from_string<int32_t>(int32_t& _variableRet, const std::u32string& _value) {
bool std::from_string(short& _variableRet, const std::string& _value) { _variableRet = string_to_int32_t(_value);
_variableRet = stoi(_value);
return true; return true;
} }
bool std::from_string(short& _variableRet, const std::u32string& _value) { bool etk::from_string<int64_t>(int64_t& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_int64_t(_value);
return true; return true;
} }
bool etk::from_string<uint8_t>(uint8_t& _variableRet, const std::u32string& _value) {
bool std::from_string(unsigned short& _variableRet, const std::string& _value) { _variableRet = string_to_uint8_t(_value);
_variableRet = stoi(_value);
return true; return true;
} }
bool std::from_string(unsigned short& _variableRet, const std::u32string& _value) { bool etk::from_string<uint16_t>(uint16_t& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_uint16_t(_value);
return true; return true;
} }
bool etk::from_string<uint32_t>(uint32_t& _variableRet, const std::u32string& _value) {
bool std::from_string(int& _variableRet, const std::string& _value) { _variableRet = string_to_uint32_t(_value);
_variableRet = stoi(_value);
return true; return true;
} }
bool std::from_string(int& _variableRet, const std::u32string& _value) { bool etk::from_string<uint64_t>(uint64_t& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_uint64_t(_value);
return true; return true;
} }
bool etk::from_string<float>(float& _variableRet, const std::u32string& _value) {
bool std::from_string(unsigned int& _variableRet, const std::string& _value) { _variableRet = string_to_float(_value);
_variableRet = stoi(_value);
return true; return true;
} }
bool std::from_string(unsigned int& _variableRet, const std::u32string& _value) { bool etk::from_string<double>(double& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value); _variableRet = string_to_double(_value);
return true; return true;
} }
bool etk::from_string<long double>(long double& _variableRet, const std::u32string& _value) {
bool std::from_string(long double& _variableRet, const std::string& _value) { _variableRet = string_to_long_double(_value);
_variableRet = stold(_value);
return true; return true;
} }
bool std::from_string(long double& _variableRet, const std::u32string& _value) { bool etk::from_string<bool>(bool& _variableRet, const std::u32string& _value) {
_variableRet = stold(_value); _variableRet = string_to_bool(_value);
return true;
}
bool std::from_string(long& _variableRet, const std::string& _value) {
_variableRet = stol(_value);
return true;
}
bool std::from_string(long& _variableRet, const std::u32string& _value) {
_variableRet = stol(_value);
return true;
}
bool std::from_string(long long& _variableRet, const std::string& _value) {
_variableRet = stoll(_value);
return true;
}
bool std::from_string(long long& _variableRet, const std::u32string& _value) {
_variableRet = stoll(_value);
return true;
}
bool std::from_string(unsigned long& _variableRet, const std::string& _value) {
_variableRet = stoul(_value);
return true;
}
bool std::from_string(unsigned long& _variableRet, const std::u32string& _value) {
_variableRet = stoul(_value);
return true;
}
bool std::from_string(unsigned long long& _variableRet, const std::string& _value) {
_variableRet = stoull(_value);
return true;
}
bool std::from_string(unsigned long long& _variableRet, const std::u32string& _value) {
_variableRet = stoull(_value);
return true;
}
bool std::from_string(bool& _variableRet, const std::string& _value) {
_variableRet = stob(_value);
return true;
}
bool std::from_string(bool& _variableRet, const std::u32string& _value) {
_variableRet = stob(_value);
return true; return true;
} }

View File

@ -60,60 +60,15 @@ namespace utf8 {
char32_t convertChar32(const char* _input); char32_t convertChar32(const char* _input);
}; };
namespace std { namespace etk {
#ifdef __TARGET_OS__MacOs #ifdef __TARGET_OS__MacOs
typedef std::basic_string<char32_t> u32string; typedef std::basic_string<char32_t> u32string;
#endif #endif
std::string to_string(const std::u32string& _obj);
//! @previous
std::string to_string(bool _val); // these declaration is to prevent some under template declaration of unknown type
//! @previous template <class TYPE> std::string to_string(const TYPE& _variable);
inline std::string to_string(std::string _val) { template <class TYPE> std::u32string to_string(const TYPE& _variable);
return _val;
}
#if (defined(__TARGET_OS__Android))
//! @previous
std::string to_string(int _val);
//! @previous
std::string to_string(long _val);
//! @previous
std::string to_string(long long _val);
//! @previous
std::string to_string(unsigned _val);
//! @previous
std::string to_string(unsigned long _val);
//! @previous
std::string to_string(unsigned long long _val);
//! @previous
std::string to_string(float _val);
//! @previous
std::string to_string(double _val);
//! @previous
std::string to_string(long double _val);
#endif
std::u32string to_u32string(const char* _obj);
//! @previous
std::u32string to_u32string(const std::string& _obj);
//! @previous
std::u32string to_u32string(bool _val);
//! @previous
std::u32string to_u32string(int _val);
//! @previous
std::u32string to_u32string(long _val);
//! @previous
std::u32string to_u32string(long long _val);
//! @previous
std::u32string to_u32string(unsigned _val);
//! @previous
std::u32string to_u32string(unsigned long _val);
//! @previous
std::u32string to_u32string(unsigned long long _val);
//! @previous
std::u32string to_u32string(float _val);
//! @previous
std::u32string to_u32string(double _val);
//! @previous
std::u32string to_u32string(long double _val);
template<class TYPE, int size=0> std::string to_string_format(TYPE t, std::ios_base & (*f)(std::ios_base&)) { template<class TYPE, int size=0> std::string to_string_format(TYPE t, std::ios_base & (*f)(std::ios_base&)) {
@ -135,122 +90,42 @@ namespace std {
return std::to_u32string(oss.str()); return std::to_u32string(oss.str());
} }
bool from_string(std::string& _variableRet, const std::string& _value); // these declaration is to prevent some under template declaration of unknown type
//! @previous template <class TYPE> bool from_string(TYPE& _variableRet, const std::string& _value);
bool from_string(std::string& _variableRet, const std::u32string& _value); template <class TYPE> bool from_string(TYPE& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(std::u32string& _variableRet, const std::string& _value);
//! @previous
bool from_string(std::u32string& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(bool& _variableRet, const std::string& _value);
//! @previous
bool from_string(bool& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(char& _variableRet, const std::string& _value);
//! @previous
bool from_string(char& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(short& _variableRet, const std::string& _value);
//! @previous
bool from_string(short& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(int& _variableRet, const std::string& _value);
//! @previous
bool from_string(int& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(long& _variableRet, const std::string& _value);
//! @previous
bool from_string(long& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(long long& _variableRet, const std::string& _value);
//! @previous
bool from_string(long long& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(unsigned char& _variableRet, const std::string& _value);
//! @previous
bool from_string(unsigned char& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(unsigned short& _variableRet, const std::string& _value);
//! @previous
bool from_string(unsigned short& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(unsigned& _variableRet, const std::string& _value);
//! @previous
bool from_string(unsigned& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(unsigned long& _variableRet, const std::string& _value);
//! @previous
bool from_string(unsigned long& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(unsigned long long& _variableRet, const std::string& _value);
//! @previous
bool from_string(unsigned long long& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(float& _variableRet, const std::string& _value);
//! @previous
bool from_string(float& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(double& _variableRet, const std::string& _value);
//! @previous
bool from_string(double& _variableRet, const std::u32string& _value);
//! @previous
bool from_string(long double& _variableRet, const std::string& _value);
//! @previous
bool from_string(long double& _variableRet, const std::u32string& _value);
#if (defined(__TARGET_OS__Android)) double string_to_double(const std::string& _str);
double stod(const std::string& _str, size_t* _idx = 0); double string_to_dbouble(const std::u32string& _str);
#endif
//! @previous
double stod(const std::u32string& _str, size_t* _idx = 0);
#if (defined(__TARGET_OS__Android)) float string_to_float(const std::string& _str);
float stof(const std::string& _str, size_t* _idx = 0); float string_to_float(const std::u32string& _str);
#endif
//! @previous
float stof(const std::u32string& _str, size_t* _idx = 0);
#if (defined(__TARGET_OS__Android)) int string_to_int32_t(const std::string& _str, int _base = 10);
int stoi(const std::string& _str, size_t* _idx = 0, int _base = 10); int string_to_i(const std::u32string& _str, int _base = 10);
#endif
//! @previous
int stoi(const std::u32string& _str, size_t* _idx = 0, int _base = 10);
#if (defined(__TARGET_OS__Android)) long string_to_l(const std::string& _str, int _base = 10);
long stol(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif
//! @previous //! @previous
long stol(const std::u32string& _str, size_t* _idx = 0, int _base = 10); long string_to_l(const std::u32string& _str, int _base = 10);
#if (defined(__TARGET_OS__Android)) long double string_to_ld(const std::string& _str);
long double stold(const std::string& _str, size_t* _idx = 0);
#endif
//! @previous //! @previous
long double stold(const std::u32string& _str, size_t* _idx = 0); long double string_to_ld(const std::u32string& _str);
#if (defined(__TARGET_OS__Android)) long long string_to_ll(const std::string& _str, int _base = 10);
long long stoll(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif
//! @previous //! @previous
long long stoll(const std::u32string& _str, size_t* _idx = 0, int _base = 10); long long string_to_ll(const std::u32string& _str, int _base = 10);
#if (defined(__TARGET_OS__Android)) unsigned long stoul(const std::string& _str, int _base = 10);
unsigned long stoul(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif
//! @previous //! @previous
unsigned long stoul(const std::u32string& _str, size_t* _idx = 0, int _base = 10); unsigned long stoul(const std::u32string& _str, int _base = 10);
#if (defined(__TARGET_OS__Android)) unsigned long long stoull(const std::string& _str, int _base = 10);
unsigned long long stoull(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif
//! @previous //! @previous
unsigned long long stoull(const std::u32string& _str, size_t* _idx = 0, int _base = 10); unsigned long long stoull(const std::u32string& _str, int _base = 10);
bool stob(const std::string& _str); bool stob(const std::string& _str);
//! @previous //! @previous
bool stob(const std::u32string& _str); bool stob(const std::u32string& _str);
std::string tolower(std::string _obj); std::string tolower(std::string _obj);
//! @previous //! @previous
std::u32string tolower(std::u32string _obj); std::u32string tolower(std::u32string _obj);
@ -285,13 +160,15 @@ namespace std {
void sort(std::vector<std::u32string *>& _list); void sort(std::vector<std::u32string *>& _list);
//! @previous //! @previous
void sort(std::vector<std::string *>& _list); void sort(std::vector<std::string *>& _list);
};
namespace std {
template <class TYPE> const TYPE& avg(const TYPE& a, const TYPE& b, const TYPE& c) { template <class TYPE> const TYPE& avg(const TYPE& a, const TYPE& b, const TYPE& c) {
return std::min(std::max(a,b),c); return std::min(std::max(a,b),c);
} }
}; };
namespace std { namespace etk {
std::ostream& operator <<(std::ostream& _os, const std::string& _obj); std::ostream& operator <<(std::ostream& _os, const std::string& _obj);
std::ostream& operator <<(std::ostream& _os, const std::vector<std::string>& _obj); std::ostream& operator <<(std::ostream& _os, const std::vector<std::string>& _obj);
std::ostream& operator <<(std::ostream& _os, const std::u32string& _obj); std::ostream& operator <<(std::ostream& _os, const std::u32string& _obj);