[DEV] change std::to_string perimeter

This commit is contained in:
Edouard DUPIN 2014-08-12 21:08:38 +02:00
parent ab78695585
commit e56a7466c6
7 changed files with 473 additions and 28 deletions

View File

@ -337,15 +337,15 @@ namespace etk {
template<int MY_TYPE_SIZE> std::ostream& operator <<(std::ostream& _os, const Color<uint8_t, MY_TYPE_SIZE>& _obj) { // RGB & RGBA 8 bits template<int MY_TYPE_SIZE> std::ostream& operator <<(std::ostream& _os, const Color<uint8_t, MY_TYPE_SIZE>& _obj) { // RGB & RGBA 8 bits
if (MY_TYPE_SIZE >= 3) { if (MY_TYPE_SIZE >= 3) {
_os << "#"; _os << "#";
_os << (std::to_string<uint32_t, 2>(_obj.r(), std::hex)).c_str(); _os << (std::to_string_format<uint32_t, 2>(_obj.r(), std::hex)).c_str();
if (MY_TYPE_SIZE >= 2) { if (MY_TYPE_SIZE >= 2) {
_os << (std::to_string<uint32_t, 2>(_obj.g(), std::hex)).c_str(); _os << (std::to_string_format<uint32_t, 2>(_obj.g(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 3) { if (MY_TYPE_SIZE >= 3) {
_os << (std::to_string<uint32_t, 2>(_obj.b(), std::hex)).c_str(); _os << (std::to_string_format<uint32_t, 2>(_obj.b(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 4) { if (MY_TYPE_SIZE >= 4) {
_os << (std::to_string<uint32_t, 2>(_obj.a(), std::hex)).c_str(); _os << (std::to_string_format<uint32_t, 2>(_obj.a(), std::hex)).c_str();
} }
} else { } else {
if (MY_TYPE_SIZE >= 2) { if (MY_TYPE_SIZE >= 2) {
@ -354,10 +354,10 @@ namespace etk {
_os << "Mono"; _os << "Mono";
} }
_os << "[U8]("; _os << "[U8](";
_os << "0x" << (std::to_string<uint32_t, 2>(_obj.r(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 2>(_obj.r(), std::hex)).c_str();
if (MY_TYPE_SIZE >= 2) { if (MY_TYPE_SIZE >= 2) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 2>(_obj.g(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 2>(_obj.g(), std::hex)).c_str();
} }
_os << ")"; _os << ")";
} }
@ -375,18 +375,18 @@ namespace etk {
_os << "Mono"; _os << "Mono";
} }
_os << "[U16]("; _os << "[U16](";
_os << "0x" << (std::to_string<uint32_t, 4>(_obj.r(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 4>(_obj.r(), std::hex)).c_str();
if (MY_TYPE_SIZE >= 2) { if (MY_TYPE_SIZE >= 2) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 4>(_obj.g(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 4>(_obj.g(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 3) { if (MY_TYPE_SIZE >= 3) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 4>(_obj.b(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 4>(_obj.b(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 4) { if (MY_TYPE_SIZE >= 4) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 4>(_obj.a(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 4>(_obj.a(), std::hex)).c_str();
} }
_os << ")"; _os << ")";
return _os; return _os;
@ -403,18 +403,18 @@ namespace etk {
_os << "Mono"; _os << "Mono";
} }
_os << "[U32]("; _os << "[U32](";
_os << "0x" << (std::to_string<uint32_t, 8>(_obj.r(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 8>(_obj.r(), std::hex)).c_str();
if (MY_TYPE_SIZE >= 2) { if (MY_TYPE_SIZE >= 2) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 8>(_obj.g(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 8>(_obj.g(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 3) { if (MY_TYPE_SIZE >= 3) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 8>(_obj.b(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 8>(_obj.b(), std::hex)).c_str();
} }
if (MY_TYPE_SIZE >= 4) { if (MY_TYPE_SIZE >= 4) {
_os << ","; _os << ",";
_os << "0x" << (std::to_string<uint32_t, 8>(_obj.a(), std::hex)).c_str(); _os << "0x" << (std::to_string_format<uint32_t, 8>(_obj.a(), std::hex)).c_str();
} }
_os << ")"; _os << ")";
return _os; return _os;

View File

@ -126,7 +126,7 @@ namespace etk {
tmpStr.erase(0, posComa+1); tmpStr.erase(0, posComa+1);
m_floats[1] = std::stob(tmpStr); m_floats[1] = std::stob(tmpStr);
} }
TK_VERBOSE("Parse : \"" << _str << "\" ==> " << *this); TK_VERBOSE("Parse : '" << _str << "' ==> " << *this);
} }
template<> Vector2D<bool>::Vector2D(const std::u32string& _str) { template<> Vector2D<bool>::Vector2D(const std::u32string& _str) {
m_floats[0] = false; m_floats[0] = false;
@ -243,8 +243,7 @@ namespace etk {
return str; return str;
} }
template<> Vector2D<uint32_t>::Vector2D(const std::string& _str) template<> Vector2D<uint32_t>::Vector2D(const std::string& _str) {
{
m_floats[0] = 0; m_floats[0] = 0;
m_floats[1] = 0; m_floats[1] = 0;
// copy to permit to modify it : // copy to permit to modify it :
@ -375,6 +374,9 @@ std::string std::to_string(const vec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const vec2& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const ivec2& _obj) { std::string std::to_string(const ivec2& _obj) {
std::string str; std::string str;
@ -385,6 +387,9 @@ std::string std::to_string(const ivec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const ivec2& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const uivec2& _obj) { std::string std::to_string(const uivec2& _obj) {
std::string str; std::string str;
@ -395,6 +400,9 @@ std::string std::to_string(const uivec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const uivec2& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const bvec2& _obj) { std::string std::to_string(const bvec2& _obj) {
std::string str; std::string str;
@ -405,3 +413,39 @@ std::string std::to_string(const bvec2& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const bvec2& _obj) {
return std::to_u32string(std::to_string(_obj));
}
bool std::from_string(vec2& _variableRet, const std::string& _value) {
_variableRet = vec2(_value);
return true;
}
bool std::from_string(vec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(ivec2& _variableRet, const std::string& _value) {
_variableRet = ivec2(_value);
return true;
}
bool std::from_string(ivec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(uivec2& _variableRet, const std::string& _value) {
_variableRet = uivec2(_value);
return true;
}
bool std::from_string(uivec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(bvec2& _variableRet, const std::string& _value) {
_variableRet = bvec2(_value);
return true;
}
bool std::from_string(bvec2& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}

View File

@ -379,6 +379,18 @@ namespace std {
std::string to_string(const bvec2& _obj); std::string to_string(const bvec2& _obj);
std::string to_string(const ivec2& _obj); std::string to_string(const ivec2& _obj);
std::string to_string(const uivec2& _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 {

View File

@ -8,7 +8,7 @@
#include <etk/math/Vector3D.h> #include <etk/math/Vector3D.h>
std::ostream& etk::operator <<(std::ostream& _os, const etk::Vector3D<int32_t>& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const ivec3& _obj) {
_os << "("; _os << "(";
_os << _obj.x(); _os << _obj.x();
_os << ","; _os << ",";
@ -19,7 +19,7 @@ std::ostream& etk::operator <<(std::ostream& _os, const etk::Vector3D<int32_t>&
return _os; return _os;
} }
std::ostream& etk::operator <<(std::ostream& _os, const btVector3& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const vec3& _obj) {
_os << "("; _os << "(";
_os << _obj.x(); _os << _obj.x();
_os << ","; _os << ",";
@ -30,7 +30,7 @@ std::ostream& etk::operator <<(std::ostream& _os, const btVector3& _obj) {
return _os; return _os;
} }
std::ostream& etk::operator <<(std::ostream& _os, const etk::Vector3D<uint32_t>& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const uivec3& _obj) {
_os << "("; _os << "(";
_os << _obj.x(); _os << _obj.x();
_os << ","; _os << ",";
@ -41,7 +41,7 @@ std::ostream& etk::operator <<(std::ostream& _os, const etk::Vector3D<uint32_t>&
return _os; return _os;
} }
std::ostream& etk::operator <<(std::ostream& _os, const etk::Vector3D<bool>& _obj) { std::ostream& etk::operator <<(std::ostream& _os, const bvec3& _obj) {
_os << "("; _os << "(";
_os << _obj.x(); _os << _obj.x();
_os << ","; _os << ",";
@ -121,6 +121,9 @@ std::string std::to_string(const vec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const vec3& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const ivec3& _obj) { std::string std::to_string(const ivec3& _obj) {
std::string str; std::string str;
@ -133,6 +136,9 @@ std::string std::to_string(const ivec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const ivec3& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const uivec3& _obj) { std::string std::to_string(const uivec3& _obj) {
std::string str; std::string str;
@ -145,6 +151,9 @@ std::string std::to_string(const uivec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const uivec3& _obj) {
return std::to_u32string(std::to_string(_obj));
}
std::string std::to_string(const bvec3& _obj) { std::string std::to_string(const bvec3& _obj) {
std::string str; std::string str;
@ -157,3 +166,178 @@ std::string std::to_string(const bvec3& _obj) {
str += ")"; str += ")";
return str; return str;
} }
std::u32string std::to_u32string(const bvec3& _obj) {
return std::to_u32string(std::to_string(_obj));
}
bool std::from_string(vec3& _variableRet, const std::string& _value) {
float floats[3];
floats[0] = 0;
floats[1] = 0;
floats[2] = 0;
// copy to permit to modify it :
std::string tmpStr = _value;
if (tmpStr[0] == '(') {
tmpStr.erase(tmpStr.begin());
}
if (tmpStr[tmpStr.size()-1] == ')') {
tmpStr.erase(tmpStr.end()-1);
}
size_t posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[0] = std::stof(tmpStr);
floats[1] = floats[0];
floats[2] = floats[1];
} else {
floats[0] = std::stof(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[1] = std::stof(tmpStr);
floats[2] = floats[1];
} else {
floats[1] = std::stof(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
floats[2] = std::stof(tmpStr);
}
}
_variableRet.setValue(floats[0], floats[1], floats[2]);
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true;
}
bool std::from_string(vec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(ivec3& _variableRet, const std::string& _value) {
int32_t floats[3];
floats[0] = 0;
floats[1] = 0;
floats[2] = 0;
// copy to permit to modify it :
std::string tmpStr = _value;
if (tmpStr[0] == '(') {
tmpStr.erase(tmpStr.begin());
}
if (tmpStr[tmpStr.size()-1] == ')') {
tmpStr.erase(tmpStr.end()-1);
}
size_t posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[0] = std::stoi(tmpStr);
floats[1] = floats[0];
floats[2] = floats[1];
} else {
floats[0] = std::stoi(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[1] = std::stoi(tmpStr);
floats[2] = floats[1];
} else {
floats[1] = std::stoi(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
floats[2] = std::stoi(tmpStr);
}
}
_variableRet.setValue(floats[0], floats[1], floats[2]);
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true;
}
bool std::from_string(ivec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(uivec3& _variableRet, const std::string& _value) {
uint32_t floats[3];
floats[0] = 0;
floats[1] = 0;
floats[2] = 0;
// copy to permit to modify it :
std::string tmpStr = _value;
if (tmpStr[0] == '(') {
tmpStr.erase(tmpStr.begin());
}
if (tmpStr[tmpStr.size()-1] == ')') {
tmpStr.erase(tmpStr.end()-1);
}
size_t posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[0] = std::stoi(tmpStr);
floats[1] = floats[0];
floats[2] = floats[1];
} else {
floats[0] = std::stoi(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[1] = std::stoi(tmpStr);
floats[2] = floats[1];
} else {
floats[1] = std::stoi(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
floats[2] = std::stoi(tmpStr);
}
}
_variableRet.setValue(floats[0], floats[1], floats[2]);
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true;
}
bool std::from_string(uivec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}
bool std::from_string(bvec3& _variableRet, const std::string& _value) {
bool floats[3];
floats[0] = false;
floats[1] = false;
floats[2] = false;
// copy to permit to modify it :
std::string tmpStr = _value;
if (tmpStr[0] == '(') {
tmpStr.erase(tmpStr.begin());
}
if (tmpStr[tmpStr.size()-1] == ')') {
tmpStr.erase(tmpStr.end()-1);
}
size_t posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[0] = std::stob(tmpStr);
floats[1] = floats[0];
floats[2] = floats[1];
} else {
floats[0] = std::stob(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
posComa = tmpStr.find(',');
if (posComa == std::string::npos) {
// no coma ...
// in every case, we parse the first element :
floats[1] = std::stob(tmpStr);
floats[2] = floats[1];
} else {
floats[1] = std::stob(std::string(tmpStr, 0, posComa));
tmpStr.erase(0,posComa+1);
floats[2] = std::stob(tmpStr);
}
}
_variableRet.setValue(floats[0], floats[1], floats[2]);
TK_VERBOSE("Parse : '" << _value << "' ==> " << _variableRet);
return true;
}
bool std::from_string(bvec3& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, std::to_string(_value));
}

View File

@ -475,6 +475,18 @@ namespace std {
std::string to_string(const bvec3& _obj); std::string to_string(const bvec3& _obj);
std::string to_string(const ivec3& _obj); std::string to_string(const ivec3& _obj);
std::string to_string(const uivec3& _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 {

View File

@ -881,3 +881,131 @@ void std::sort(std::vector<std::u32string *> &_list) {
} }
/*
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);
return true;
}
bool std::from_string(float& _variableRet, const std::u32string& _value) {
_variableRet = stof(_value);
return true;
}
bool std::from_string(char& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(char& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned char& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned char& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(short& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(short& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned short& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned short& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(int& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(int& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned int& _variableRet, const std::string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(unsigned int& _variableRet, const std::u32string& _value) {
_variableRet = stoi(_value);
return true;
}
bool std::from_string(long double& _variableRet, const std::string& _value) {
_variableRet = stold(_value);
return true;
}
bool std::from_string(long double& _variableRet, const std::u32string& _value) {
_variableRet = stold(_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;
}

View File

@ -67,6 +67,10 @@ namespace std {
std::string to_string(const std::u32string& _obj); std::string to_string(const std::u32string& _obj);
//! @previous //! @previous
std::string to_string(bool _val); std::string to_string(bool _val);
//! @previous
inline std::string to_string(std::string _val) {
return _val;
}
#if (defined(__TARGET_OS__Android)) #if (defined(__TARGET_OS__Android))
//! @previous //! @previous
std::string to_string(int _val); std::string to_string(int _val);
@ -111,7 +115,8 @@ namespace std {
//! @previous //! @previous
std::u32string to_u32string(long double _val); std::u32string to_u32string(long double _val);
template<class T, int size=0> std::string to_string(T 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&)) {
std::ostringstream oss; std::ostringstream oss;
if (size==0) { if (size==0) {
oss << f << t; oss << f << t;
@ -120,7 +125,7 @@ namespace std {
} }
return oss.str(); return oss.str();
} }
template<class T, int size=0> std::u32string to_u32string(T t, std::ios_base & (*f)(std::ios_base&)) { template<class TYPE, int size=0> std::u32string to_u32string_format(TYPE t, std::ios_base & (*f)(std::ios_base&)) {
std::ostringstream oss; std::ostringstream oss;
if (size==0) { if (size==0) {
oss << f << t; oss << f << t;
@ -130,6 +135,69 @@ namespace std {
return std::to_u32string(oss.str()); return std::to_u32string(oss.str());
} }
bool from_string(std::string& _variableRet, const std::string& _value);
//! @previous
bool from_string(std::string& _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)) #if (defined(__TARGET_OS__Android))
double stod(const std::string& _str, size_t* _idx = 0); double stod(const std::string& _str, size_t* _idx = 0);
@ -182,9 +250,7 @@ namespace std {
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);
@ -220,7 +286,7 @@ namespace std {
//! @previous //! @previous
void sort(std::vector<std::string *>& _list); void sort(std::vector<std::string *>& _list);
template <class T> const T& avg(const T& a, const T& b, const T& 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);
} }
}; };
@ -234,6 +300,5 @@ namespace std {
int32_t strlen(const char32_t * _data); int32_t strlen(const char32_t * _data);
#endif #endif