aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/lib
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-08-30 09:59:14 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-08-30 10:08:25 -0700
commit24787842adfefe35f5a520313d775b14c29f143a (patch)
tree4596c3558d9e8a51eb7c47aae819c0d1dde27789 /tensorflow/core/lib
parent61fef23485d9b1c0eaa8e46bdbbe82b6f2d8f83a (diff)
Replaced tensorflow::StringPiece with an alias of absl::string_view.
PiperOrigin-RevId: 210929192
Diffstat (limited to 'tensorflow/core/lib')
-rw-r--r--tensorflow/core/lib/core/stringpiece.cc54
-rw-r--r--tensorflow/core/lib/core/stringpiece.h117
-rw-r--r--tensorflow/core/lib/strings/strcat.h3
3 files changed, 6 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
diff --git a/tensorflow/core/lib/strings/strcat.h b/tensorflow/core/lib/strings/strcat.h
index 5ae3d220e3..2c036a3040 100644
--- a/tensorflow/core/lib/strings/strcat.h
+++ b/tensorflow/core/lib/strings/strcat.h
@@ -124,6 +124,9 @@ class AlphaNum {
AlphaNum(const StringPiece &pc) : piece_(pc) {} // NOLINT(runtime/explicit)
AlphaNum(const tensorflow::string &str) // NOLINT(runtime/explicit)
: piece_(str) {}
+ template <typename A>
+ AlphaNum(const std::basic_string<char, std::char_traits<char>, A> &str)
+ : piece_(str) {} // NOLINT(runtime/explicit)
StringPiece::size_type size() const { return piece_.size(); }
const char *data() const { return piece_.data(); }