diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2018-09-10 10:23:14 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-09-10 10:29:49 -0700 |
commit | 5f004516a3c104ed7632ff4a31b65c49f620d199 (patch) | |
tree | ae64527ac2562ce0af48ed0b30e6216e8c2da33d /tensorflow/core/lib/core | |
parent | 9b674c1aa986eab6a169af81791719bffc8a505d (diff) |
Automated rollback of commit d6f107761459dfdf8773a148e11193a3512a51a6
PiperOrigin-RevId: 212289067
Diffstat (limited to 'tensorflow/core/lib/core')
-rw-r--r-- | tensorflow/core/lib/core/stringpiece.cc | 54 | ||||
-rw-r--r-- | tensorflow/core/lib/core/stringpiece.h | 117 |
2 files changed, 3 insertions, 168 deletions
diff --git a/tensorflow/core/lib/core/stringpiece.cc b/tensorflow/core/lib/core/stringpiece.cc deleted file mode 100644 index 4c488066e4..0000000000 --- a/tensorflow/core/lib/core/stringpiece.cc +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2015 The TensorFlow Authors. All Rights Reserved. - -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 "tensorflow/core/lib/core/stringpiece.h" - -#include <algorithm> -#include <iostream> - -namespace tensorflow { - -std::ostream& operator<<(std::ostream& o, StringPiece piece) { - o.write(piece.data(), piece.size()); - return o; -} - -size_t StringPiece::find(char c, size_t pos) const { - if (pos >= size_) { - return npos; - } - const char* result = - reinterpret_cast<const char*>(memchr(data_ + pos, c, size_ - pos)); - return result != nullptr ? result - data_ : npos; -} - -// Search range is [0..pos] inclusive. If pos == npos, search everything. -size_t StringPiece::rfind(char c, size_t pos) const { - if (size_ == 0) return npos; - for (const char* p = data_ + std::min(pos, size_ - 1); p >= data_; p--) { - if (*p == c) { - return p - data_; - } - } - return npos; -} - -StringPiece StringPiece::substr(size_t pos, size_t n) const { - if (pos > size_) pos = size_; - if (n > size_ - pos) n = size_ - pos; - return StringPiece(data_ + pos, n); -} - -} // namespace tensorflow diff --git a/tensorflow/core/lib/core/stringpiece.h b/tensorflow/core/lib/core/stringpiece.h index 02dded42c1..e7b17c9b36 100644 --- a/tensorflow/core/lib/core/stringpiece.h +++ b/tensorflow/core/lib/core/stringpiece.h @@ -31,124 +31,13 @@ limitations under the License. #include <string.h> #include <iosfwd> #include <string> -#include <type_traits> +#include "absl/strings/string_view.h" #include "tensorflow/core/platform/types.h" namespace tensorflow { -class StringPiece { - public: - typedef size_t size_type; - - // Create an empty slice. - StringPiece() : data_(nullptr), size_(0) {} - - // Create a slice that refers to d[0,n-1]. - StringPiece(const char* d, size_t n) : data_(d), size_(n) {} - - // Create a slice that refers to the contents of "s" - StringPiece(const string& s) : data_(s.data()), size_(s.size()) {} - - // Create a slice that refers to s[0,strlen(s)-1] - StringPiece(const char* s) : data_(s), size_(strlen(s)) {} - - // Return a pointer to the beginning of the referenced data - const char* data() const { return data_; } - - // Return the length (in bytes) of the referenced data - size_t size() const { return size_; } - - // Return true iff the length of the referenced data is zero - bool empty() const { return size_ == 0; } - - typedef const char* const_iterator; - typedef const char* iterator; - iterator begin() const { return data_; } - iterator end() const { return data_ + size_; } - - static const size_t npos = size_type(-1); - - // Return the ith byte in the referenced data. - // REQUIRES: n < size() - char operator[](size_t n) const { - assert(n < size()); - return data_[n]; - } - - // Drop the first "n" bytes from this slice. - void remove_prefix(size_t n) { - assert(n <= size()); - data_ += n; - size_ -= n; - } - - void remove_suffix(size_t n) { - assert(size_ >= n); - size_ -= n; - } - - size_t find(char c, size_t pos = 0) const; - size_t rfind(char c, size_t pos = npos) const; - - StringPiece substr(size_t pos, size_t n = npos) const; - - // Three-way comparison. Returns value: - // < 0 iff "*this" < "b", - // == 0 iff "*this" == "b", - // > 0 iff "*this" > "b" - int compare(StringPiece b) const; - - // Converts to various kinds of strings, including `std::basic_string`. - template <typename S> - explicit operator S() const { - static_assert( - std::is_same<char, typename S::value_type>::value, - "Type mismatch: S must be a string with character type char."); - static_assert( - std::is_same<std::char_traits<char>, typename S::traits_type>::value, - "Type mismatch: S must be a string with traits type " - "std::char_traits<char>."); - if (!data()) return {}; - return S(data(), size()); - } - - private: - const char* data_; - size_t size_; - - // Intentionally copyable -}; - -inline bool operator==(StringPiece x, StringPiece y) { - return ((x.size() == y.size()) && - (memcmp(x.data(), y.data(), x.size()) == 0)); -} - -inline bool operator!=(StringPiece x, StringPiece y) { return !(x == y); } - -inline bool operator<(StringPiece x, StringPiece y) { return x.compare(y) < 0; } -inline bool operator>(StringPiece x, StringPiece y) { return x.compare(y) > 0; } -inline bool operator<=(StringPiece x, StringPiece y) { - return x.compare(y) <= 0; -} -inline bool operator>=(StringPiece x, StringPiece y) { - return x.compare(y) >= 0; -} - -inline int StringPiece::compare(StringPiece b) const { - const size_t min_len = (size_ < b.size_) ? size_ : b.size_; - int r = memcmp(data_, b.data_, min_len); - if (r == 0) { - if (size_ < b.size_) - r = -1; - else if (size_ > b.size_) - r = +1; - } - return r; -} - -// allow StringPiece to be logged -extern std::ostream& operator<<(std::ostream& o, tensorflow::StringPiece piece); +// Deprecated: please use absl::string_view directly. +using StringPiece = absl::string_view; } // namespace tensorflow |