From: Christopher Dykes Date: Tue, 20 Jun 2017 04:23:56 +0000 (-0700) Subject: Revert D5278412: [Folly] Merge StringBase.cpp and String.cpp X-Git-Tag: v2017.06.26.00~42 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a6ad67f798589881f048e819a7e4af68f85ba322;p=folly.git Revert D5278412: [Folly] Merge StringBase.cpp and String.cpp Summary: This reverts commit 07639e155421f31a6cc7ed16cba2034750e44325 Differential Revision: D5278412 fbshipit-source-id: 4b4d60f1f472ebe2e68e8eea1a31f42bc55c60ed --- diff --git a/folly/Makefile.am b/folly/Makefile.am index 5742665c..37d47db4 100644 --- a/folly/Makefile.am +++ b/folly/Makefile.am @@ -451,6 +451,7 @@ libfollybase_la_SOURCES = \ FormatTables.cpp \ MallctlHelper.cpp \ portability/BitsFunctexcept.cpp \ + StringBase.cpp \ String.cpp \ Unicode.cpp diff --git a/folly/String.cpp b/folly/String.cpp index af86c668..e8de48da 100644 --- a/folly/String.cpp +++ b/folly/String.cpp @@ -16,6 +16,7 @@ #include +#include #include #include @@ -29,42 +30,6 @@ namespace folly { -static inline bool is_oddspace(char c) { - return c == '\n' || c == '\t' || c == '\r'; -} - -StringPiece ltrimWhitespace(StringPiece sp) { - // Spaces other than ' ' characters are less common but should be - // checked. This configuration where we loop on the ' ' - // separately from oddspaces was empirically fastest. - -loop: - for (; !sp.empty() && sp.front() == ' '; sp.pop_front()) { - } - if (!sp.empty() && is_oddspace(sp.front())) { - sp.pop_front(); - goto loop; - } - - return sp; -} - -StringPiece rtrimWhitespace(StringPiece sp) { - // Spaces other than ' ' characters are less common but should be - // checked. This configuration where we loop on the ' ' - // separately from oddspaces was empirically fastest. - -loop: - for (; !sp.empty() && sp.back() == ' '; sp.pop_back()) { - } - if (!sp.empty() && is_oddspace(sp.back())) { - sp.pop_back(); - goto loop; - } - - return sp; -} - namespace { int stringAppendfImplHelper(char* buf, @@ -542,7 +507,6 @@ namespace detail { size_t hexDumpLine(const void* ptr, size_t offset, size_t size, std::string& line) { - static char hexValues[] = "0123456789abcdef"; // Line layout: // 8: address // 1: space @@ -556,24 +520,13 @@ size_t hexDumpLine(const void* ptr, size_t offset, size_t size, line.reserve(78); const uint8_t* p = reinterpret_cast(ptr) + offset; size_t n = std::min(size - offset, size_t(16)); - line.push_back(hexValues[(offset >> 28) & 0xf]); - line.push_back(hexValues[(offset >> 24) & 0xf]); - line.push_back(hexValues[(offset >> 20) & 0xf]); - line.push_back(hexValues[(offset >> 16) & 0xf]); - line.push_back(hexValues[(offset >> 12) & 0xf]); - line.push_back(hexValues[(offset >> 8) & 0xf]); - line.push_back(hexValues[(offset >> 4) & 0xf]); - line.push_back(hexValues[offset & 0xf]); - line.push_back(' '); + format("{:08x} ", offset).appendTo(line); for (size_t i = 0; i < n; i++) { if (i == 8) { line.push_back(' '); } - - line.push_back(' '); - line.push_back(hexValues[(p[i] >> 4) & 0xf]); - line.push_back(hexValues[p[i] & 0xf]); + format(" {:02x}", p[i]).appendTo(line); } // 3 spaces for each byte we're not printing, one separating the halves diff --git a/folly/StringBase.cpp b/folly/StringBase.cpp new file mode 100644 index 00000000..da98e2ed --- /dev/null +++ b/folly/StringBase.cpp @@ -0,0 +1,57 @@ +/* + * Copyright 2017 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +namespace folly { + +static inline bool is_oddspace(char c) { + return c == '\n' || c == '\t' || c == '\r'; +} + +StringPiece ltrimWhitespace(StringPiece sp) { + // Spaces other than ' ' characters are less common but should be + // checked. This configuration where we loop on the ' ' + // separately from oddspaces was empirically fastest. + +loop: + for (; !sp.empty() && sp.front() == ' '; sp.pop_front()) { + } + if (!sp.empty() && is_oddspace(sp.front())) { + sp.pop_front(); + goto loop; + } + + return sp; +} + +StringPiece rtrimWhitespace(StringPiece sp) { + // Spaces other than ' ' characters are less common but should be + // checked. This configuration where we loop on the ' ' + // separately from oddspaces was empirically fastest. + +loop: + for (; !sp.empty() && sp.back() == ' '; sp.pop_back()) { + } + if (!sp.empty() && is_oddspace(sp.back())) { + sp.pop_back(); + goto loop; + } + + return sp; +} + +}