summaryrefslogtreecommitdiff
path: root/src/mbgl/util/string.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/util/string.cpp')
-rw-r--r--src/mbgl/util/string.cpp62
1 files changed, 55 insertions, 7 deletions
diff --git a/src/mbgl/util/string.cpp b/src/mbgl/util/string.cpp
index 06ccb56968..2f737e7436 100644
--- a/src/mbgl/util/string.cpp
+++ b/src/mbgl/util/string.cpp
@@ -1,19 +1,67 @@
#include <mbgl/util/string.hpp>
-#include <mbgl/util/dtoa.hpp>
+
+#include <rapidjson/writer.h>
+#include <rapidjson/stringbuffer.h>
+
+#include <cassert>
namespace mbgl {
namespace util {
-std::string toString(float num, bool decimal) {
- return dtoa(num, decimal);
+std::string toString(int32_t t) {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.Int(t);
+ return s.GetString();
+}
+
+std::string toString(uint32_t t) {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.Uint(t);
+ return s.GetString();
}
-std::string toString(double num, bool decimal) {
- return dtoa(num, decimal);
+std::string toString(int64_t t) {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.Int64(t);
+ return s.GetString();
}
-std::string toString(long double num, bool decimal) {
- return dtoa(num, decimal);
+std::string toString(uint64_t t) {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.Uint64(t);
+ return s.GetString();
+}
+
+std::string toString(double t, bool decimal) {
+ rapidjson::StringBuffer s;
+ rapidjson::Writer<rapidjson::StringBuffer> writer(s);
+ writer.Double(t);
+ std::string data = s.GetString();
+ if (!decimal && data.length() >= 3 && data[data.length() - 1] == '0' && data[data.length() - 2] == '.') {
+ // Remove trailing ".0" for integers
+ data.resize(data.length() - 2);
+ }
+ return data;
+}
+
+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 {