#pragma once #include #include #include #include #include // Polyfill needed by Qt when building for Android with GCC #if defined(__ANDROID__) && defined(__GLIBCXX__) namespace std { template std::string to_string(T value) { std::ostringstream oss; oss << value; return oss.str(); } inline int stoi(const std::string &str) { return atoi(str.c_str()); } } // namespace std #endif namespace mbgl { namespace util { template inline std::string toString(T t) { return std::to_string(t); } inline std::string toString(int8_t num) { return std::to_string(int(num)); } inline std::string toString(uint8_t num) { return std::to_string(unsigned(num)); } std::string toString(float); std::string toString(double); std::string toString(long double); inline std::string toString(std::exception_ptr error) { assert(error); if (!error) { return "(null)"; } try { std::rethrow_exception(error); } catch (const std::exception& ex) { return ex.what(); } catch (...) { return "Unknown exception type"; } } } // namespace util } // namespace mbgl