mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
src: make ToLower/ToUpper input args more flexible
In particular, this enables passing `std::string_view` instead. PR-URL: https://github.com/nodejs/node/pull/60052 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
This commit is contained in:
@@ -194,10 +194,14 @@ char ToLower(char c) {
|
||||
return std::tolower(c, std::locale::classic());
|
||||
}
|
||||
|
||||
std::string ToLower(const std::string& in) {
|
||||
std::string out(in.size(), 0);
|
||||
for (size_t i = 0; i < in.size(); ++i)
|
||||
out[i] = ToLower(in[i]);
|
||||
template <typename T>
|
||||
std::string ToLower(const T& in) {
|
||||
auto it = std::cbegin(in);
|
||||
auto end = std::cend(in);
|
||||
std::string out(std::distance(it, end), 0);
|
||||
size_t i;
|
||||
for (i = 0; it != end; ++it, ++i) out[i] = ToLower(*it);
|
||||
DCHECK_EQ(i, out.size());
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -205,10 +209,14 @@ char ToUpper(char c) {
|
||||
return std::toupper(c, std::locale::classic());
|
||||
}
|
||||
|
||||
std::string ToUpper(const std::string& in) {
|
||||
std::string out(in.size(), 0);
|
||||
for (size_t i = 0; i < in.size(); ++i)
|
||||
out[i] = ToUpper(in[i]);
|
||||
template <typename T>
|
||||
std::string ToUpper(const T& in) {
|
||||
auto it = std::cbegin(in);
|
||||
auto end = std::cend(in);
|
||||
std::string out(std::distance(it, end), 0);
|
||||
size_t i;
|
||||
for (i = 0; it != end; ++it, ++i) out[i] = ToUpper(*it);
|
||||
DCHECK_EQ(i, out.size());
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
@@ -366,11 +366,13 @@ inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(v8::Isolate* isolate,
|
||||
|
||||
// tolower() is locale-sensitive. Use ToLower() instead.
|
||||
inline char ToLower(char c);
|
||||
inline std::string ToLower(const std::string& in);
|
||||
template <typename T>
|
||||
inline std::string ToLower(const T& in);
|
||||
|
||||
// toupper() is locale-sensitive. Use ToUpper() instead.
|
||||
inline char ToUpper(char c);
|
||||
inline std::string ToUpper(const std::string& in);
|
||||
template <typename T>
|
||||
inline std::string ToUpper(const T& in);
|
||||
|
||||
// strcasecmp() is locale-sensitive. Use StringEqualNoCase() instead.
|
||||
inline bool StringEqualNoCase(const char* a, const char* b);
|
||||
|
||||
Reference in New Issue
Block a user