summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/lldb/source/Utility/JSON.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Utility/JSON.cpp')
-rw-r--r--contrib/llvm/tools/lldb/source/Utility/JSON.cpp50
1 files changed, 26 insertions, 24 deletions
diff --git a/contrib/llvm/tools/lldb/source/Utility/JSON.cpp b/contrib/llvm/tools/lldb/source/Utility/JSON.cpp
index 5b809c5..1520bc7 100644
--- a/contrib/llvm/tools/lldb/source/Utility/JSON.cpp
+++ b/contrib/llvm/tools/lldb/source/Utility/JSON.cpp
@@ -9,10 +9,15 @@
#include "lldb/Utility/JSON.h"
-#include "lldb/Core/StreamString.h"
-#include "lldb/Host/StringConvert.h"
+#include "lldb/Utility/Stream.h" // for Stream
+#include "lldb/Utility/StreamString.h"
+#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ErrorHandling.h"
+
+#include <inttypes.h> // for PRIu64, PRId64
#include <limits.h>
+#include <stddef.h> // for size_t
+#include <utility> // for pair
using namespace lldb_private;
@@ -186,7 +191,7 @@ JSONValue::SP JSONArray::GetObject(Index i) {
JSONArray::Size JSONArray::GetNumElements() { return m_elements.size(); }
-JSONParser::JSONParser(const char *cstr) : StringExtractor(cstr) {}
+JSONParser::JSONParser(llvm::StringRef data) : StringExtractor(data) {}
JSONParser::Token JSONParser::GetToken(std::string &value) {
StreamString error;
@@ -241,7 +246,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
"error: an error occurred getting a character from offset %" PRIu64,
start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
} else {
const bool is_end_quote = escaped_ch == '"';
@@ -254,13 +259,13 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
"character 0x%4.4x at offset %" PRIu64,
escaped_ch, start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
} else if (is_end_quote) {
return Token::String;
} else if (is_null) {
value = "error: missing end quote for string";
- return Token::Error;
+ return Token::Status;
}
}
}
@@ -311,7 +316,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
error.Printf("error: extra decimal point found at offset %" PRIu64,
start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
} else {
got_decimal_point = true;
++m_index; // Skip this character
@@ -325,7 +330,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
"error: extra exponent character found at offset %" PRIu64,
start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
} else {
exp_index = m_index;
++m_index; // Skip this character
@@ -341,7 +346,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
error.Printf("error: unexpected %c character at offset %" PRIu64,
next_ch, start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
break;
@@ -363,7 +368,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
"at offset in float value \"%s\"",
value.c_str());
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
} else {
// No exponent, but we need at least one decimal after the decimal
@@ -374,7 +379,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
error.Printf("error: no digits after decimal point \"%s\"",
value.c_str());
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
}
} else {
@@ -385,14 +390,14 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
} else {
error.Printf("error: no digits negate sign \"%s\"", value.c_str());
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
}
} else {
error.Printf("error: invalid number found at offset %" PRIu64,
start_index);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
} break;
default:
@@ -402,7 +407,7 @@ JSONParser::Token JSONParser::GetToken(std::string &value) {
" (around character '%c')",
start_index, ch);
value = std::move(error.GetString());
- return Token::Error;
+ return Token::Status;
}
int JSONParser::GetEscapedChar(bool &was_escaped) {
@@ -512,23 +517,20 @@ JSONValue::SP JSONParser::ParseJSONValue() {
case JSONParser::Token::Integer: {
if (value.front() == '-') {
- bool success = false;
- int64_t sval = StringConvert::ToSInt64(value.c_str(), 0, 0, &success);
- if (success)
+ int64_t sval = 0;
+ if (!llvm::StringRef(value).getAsInteger(0, sval))
return JSONValue::SP(new JSONNumber(sval));
} else {
- bool success = false;
- uint64_t uval = StringConvert::ToUInt64(value.c_str(), 0, 0, &success);
- if (success)
+ uint64_t uval = 0;
+ if (!llvm::StringRef(value).getAsInteger(0, uval))
return JSONValue::SP(new JSONNumber(uval));
}
} break;
case JSONParser::Token::Float: {
- bool success = false;
- double val = StringConvert::ToDouble(value.c_str(), 0.0, &success);
- if (success)
- return JSONValue::SP(new JSONNumber(val));
+ double D;
+ if (!llvm::StringRef(value).getAsDouble(D))
+ return JSONValue::SP(new JSONNumber(D));
} break;
case JSONParser::Token::String:
OpenPOWER on IntegriCloud