#pragma once #include #include #include // Polyfill needed by Qt when building for Android with GCC #if defined(__ANDROID__) && defined(__GLIBCXX__) namespace std { inline int stoi(const std::string &str) { return atoi(str.c_str()); } inline float stof(const std::string &str) { return static_cast(atof(str.c_str())); } } // namespace std #endif namespace mbgl { namespace util { std::string toString(int64_t); std::string toString(uint64_t); std::string toString(int32_t); std::string toString(uint32_t); std::string toString(double, bool decimal = false); inline std::string toString(int16_t t) { return toString(static_cast(t)); } inline std::string toString(uint16_t t) { return toString(static_cast(t)); } inline std::string toString(int8_t t) { return toString(static_cast(t)); } inline std::string toString(uint8_t t) { return toString(static_cast(t)); } template ::value>> inline std::string toString(unsigned long t) { return toString(static_cast(t)); } template ::value>> inline std::string toString(unsigned long long t) { return toString(static_cast(t)); } inline std::string toString(float t, bool decimal = false) { return toString(static_cast(t), decimal); } inline std::string toString(long double t, bool decimal = false) { return toString(static_cast(t), decimal); } std::string toString(std::exception_ptr); template std::string toString(T) = delete; std::string toHex(uint32_t); std::string toHex(uint64_t); inline float stof(const std::string& str) { return std::stof(str); } } // namespace util } // namespace mbgl // Android's libstdc++ doesn't have std::to_string() #if defined(__ANDROID__) && defined(__GLIBCXX__) namespace std { template inline std::string to_string(T value) { return mbgl::util::toString(value); } } // namespace std #endif