X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2FString.h;h=750863b986bbe52b4812aaa0ed8f84cc89052779;hp=5570b7b9b46af33d2dba9726415ebf21f9f01b86;hb=fe9d8cadb9bba9ddc7ea151f779458b8dc1904cd;hpb=fbfe105970bcf88e8c123046f84bebdfe24f8801 diff --git a/folly/String.h b/folly/String.h index 5570b7b9..750863b9 100644 --- a/folly/String.h +++ b/folly/String.h @@ -211,12 +211,15 @@ std::string& stringVAppendf(std::string* out, const char* format, va_list ap); * C++, use cEscape instead. This function is for display purposes * only. */ -template -void backslashify(const String1& input, String2& output, bool hex_style=false); +template +void backslashify( + folly::StringPiece input, + OutputString& output, + bool hex_style = false); -template -String backslashify(const String& input, bool hex_style=false) { - String output; +template +OutputString backslashify(StringPiece input, bool hex_style = false) { + OutputString output; backslashify(input, output, hex_style); return output; } @@ -465,21 +468,6 @@ void splitTo(const Delim& delimiter, * Note that this will likely not work if the last field's target is of numeric * type, in which case folly::to<> will throw an exception. */ -template -struct IsSomeVector { - enum { value = false }; -}; - -template -struct IsSomeVector, void> { - enum { value = true }; -}; - -template -struct IsSomeVector, void> { - enum { value = true }; -}; - template struct IsConvertible { enum { value = false }; @@ -561,11 +549,12 @@ std::string join(const Delim& delimiter, return output; } -template ::iterator_category, - std::random_access_iterator_tag>::value>::type* = nullptr> +template < + class Delim, + class Iterator, + typename std::enable_if::iterator_category, + std::random_access_iterator_tag>::value>::type* = nullptr> std::string join(const Delim& delimiter, Iterator begin, Iterator end) { std::string output; join(delimiter, begin, end, output); @@ -617,7 +606,7 @@ std::string stripLeftMargin(std::string s); * Leaves all other characters unchanged, including those with the 0x80 * bit set. * @param str String to convert - * @param len Length of str, in bytes + * @param length Length of str, in bytes */ void toLowerAscii(char* str, size_t length); @@ -625,8 +614,14 @@ inline void toLowerAscii(MutableStringPiece str) { toLowerAscii(str.begin(), str.size()); } -template >> +inline void toLowerAscii(std::string& str) { + // str[0] is legal also if the string is empty. + toLowerAscii(&str[0], str.size()); +} + +template < + class Iterator = const char*, + class Base = folly::Range>> class UTF8Range : public Base { public: /* implicit */ UTF8Range(const folly::Range baseRange)