aboutsummaryrefslogtreecommitdiff
path: root/src/common/String.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/String.cpp')
-rw-r--r--src/common/String.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/common/String.cpp b/src/common/String.cpp
index ddfa03a9..27712f01 100644
--- a/src/common/String.cpp
+++ b/src/common/String.cpp
@@ -33,7 +33,8 @@ String String::FromUtf8(const char* str, Index size) {
Utf8CodePointIterator iter(str, size);
for (auto cp : iter) {
Utf16EncodeCodePointAppend(
- cp, std::bind(&String::push_back, std::ref(result), std::placeholders::_1));
+ cp,
+ std::bind(&String::push_back, std::ref(result), std::placeholders::_1));
}
return result;
}
@@ -330,23 +331,23 @@ Range String::RangeFromCodePointToCodeUnit(Range code_point_range) const {
return View().RangeFromCodePointToCodeUnit(code_point_range);
}
-int String::ParseToInt(Index* processed_characters_count, unsigned flags,
- int base) const {
+int String::ParseToInt(Index* processed_characters_count,
+ StringToNumberFlag flags, int base) const {
return View().ParseToInt(processed_characters_count, flags, base);
}
long long String::ParseToLongLong(Index* processed_characters_count,
- unsigned flags, int base) const {
+ StringToNumberFlag flags, int base) const {
return View().ParseToLongLong(processed_characters_count, flags, base);
}
float String::ParseToFloat(Index* processed_characters_count,
- unsigned flags) const {
+ StringToNumberFlag flags) const {
return View().ParseToFloat(processed_characters_count, flags);
}
double String::ParseToDouble(Index* processed_characters_count,
- unsigned flags) const {
+ StringToNumberFlag flags) const {
return View().ParseToDouble(processed_characters_count, flags);
}
@@ -358,6 +359,11 @@ std::vector<double> String::ParseToDoubleList(value_type separator) const {
return View().ParseToDoubleList(separator);
}
+std::ostream& operator<<(std::ostream& os, const String& value) {
+ os << value.ToUtf8();
+ return os;
+}
+
namespace {
inline int Compare(char16_t left, char16_t right) {
if (left < right) return -1;
@@ -540,7 +546,8 @@ std::string StringView::ToUtf8() const {
std::string result;
for (auto cp : CodePointIterator()) {
Utf8EncodeCodePointAppend(
- cp, std::bind(&std::string::push_back, std::ref(result), std::placeholders::_1));
+ cp, std::bind(&std::string::push_back, std::ref(result),
+ std::placeholders::_1));
}
return result;
}
@@ -563,17 +570,18 @@ Buffer StringView::ToUtf8Buffer(bool end_zero) const {
return buffer;
}
-int StringView::ParseToInt(Index* processed_characters_count, unsigned flags,
- int base) const {
+int StringView::ParseToInt(Index* processed_characters_count,
+ StringToNumberFlag flags, int base) const {
return ParseToInteger<int>(processed_characters_count, flags, base);
}
long long StringView::ParseToLongLong(Index* processed_characters_count,
- unsigned flags, int base) const {
+ StringToNumberFlag flags,
+ int base) const {
return ParseToInteger<long long>(processed_characters_count, flags, base);
}
-static int MapStringToDoubleFlags(int flags) {
+static int MapStringToDoubleFlags(StringToNumberFlag flags) {
int f = double_conversion::StringToDoubleConverter::ALLOW_CASE_INSENSIBILITY;
if (flags & StringToNumberFlags::kAllowLeadingSpaces) {
f |= double_conversion::StringToDoubleConverter::ALLOW_LEADING_SPACES;
@@ -588,12 +596,12 @@ static int MapStringToDoubleFlags(int flags) {
}
static double_conversion::StringToDoubleConverter CreateStringToDoubleConverter(
- int flags) {
+ StringToNumberFlag flags) {
return {MapStringToDoubleFlags(flags), 0.0, NAN, "inf", "nan"};
}
float StringView::ParseToFloat(Index* processed_characters_count,
- unsigned flags) const {
+ StringToNumberFlag flags) const {
int pcc;
auto result = CreateStringToDoubleConverter(flags).StringToFloat(
reinterpret_cast<const uc16*>(ptr_), static_cast<int>(size_), &pcc);
@@ -609,7 +617,7 @@ float StringView::ParseToFloat(Index* processed_characters_count,
}
double StringView::ParseToDouble(Index* processed_characters_count,
- unsigned flags) const {
+ StringToNumberFlag flags) const {
int pcc;
auto result = CreateStringToDoubleConverter(flags).StringToDouble(
reinterpret_cast<const uc16*>(ptr_), static_cast<int>(size_), &pcc);