diff --git a/paddle/strings/stringpiece.cc b/paddle/strings/stringpiece.cc index ef46490fb1aaecbc8450b183fa4919f64fb97ba4..cc6d6a23f655622a94a5f474d22fe53f20ad5c5c 100644 --- a/paddle/strings/stringpiece.cc +++ b/paddle/strings/stringpiece.cc @@ -30,8 +30,8 @@ StringPiece::StringPiece(const char* d, size_t n) : data_(d), size_(n) { "StringPiece requires len to be 0 for NULL data"); } -StringPiece::StringPiece(const char* s) : data_(s), size_(strlen(s)) { - if (s == NULL) size_ = 0; +StringPiece::StringPiece(const char* s) : data_(s) { + size_ = (s == NULL) ? 0 : strlen(s); } StringPiece::StringPiece(const std::string& s) diff --git a/paddle/strings/stringpiece.h b/paddle/strings/stringpiece.h index febb9036dbabba1d180bd1aeedcb665782dcdba9..f10b5eecf4316b42244e1f7ed3f7eb30e03a2191 100644 --- a/paddle/strings/stringpiece.h +++ b/paddle/strings/stringpiece.h @@ -40,14 +40,8 @@ public: StringPiece(const char* s); StringPiece(const std::string& s); - // For a string, cap() returns the size of storage and len() - // returns the currently used storage. For a StringPiece these - // are the same value. - size_t cap() const { return size_; } - size_t len() const { return size_; } - size_t size() const { return size_; } - const char* data() const { return data_; } + size_t len() const { return size_; } char operator[](size_t n) const { assert(n < len()); diff --git a/paddle/strings/stringpiece_test.cc b/paddle/strings/stringpiece_test.cc index 79fc219a9c9056b9dd77ba6caa1de3ff136bb844..84ebc0ee032043829e956c5c0fac9f34a94f50a6 100644 --- a/paddle/strings/stringpiece_test.cc +++ b/paddle/strings/stringpiece_test.cc @@ -22,7 +22,6 @@ TEST(StringPiece, Construct) { paddle::StringPiece s; EXPECT_EQ(NULL, s.data()); EXPECT_EQ(0U, s.len()); - EXPECT_EQ(0U, s.cap()); } { EXPECT_THROW([] { paddle::StringPiece s(NULL, 10000U); }(), @@ -43,12 +42,10 @@ TEST(StringPiece, Construct) { TEST(StringPiece, CopyAndAssign) { paddle::StringPiece empty; EXPECT_EQ(0U, empty.len()); - EXPECT_EQ(0U, empty.cap()); paddle::StringPiece a("hello"); paddle::StringPiece b = a; EXPECT_EQ(b.len(), strlen("hello")); - EXPECT_EQ(b.cap(), strlen("hello")); EXPECT_EQ(a, b); std::string storage("hello"); @@ -56,3 +53,25 @@ TEST(StringPiece, CopyAndAssign) { EXPECT_EQ(a, c); EXPECT_NE(a.data(), c.data()); } + +TEST(StringPiece, Comparison) { + { + paddle::StringPiece a("hello"); + paddle::StringPiece b("world"); + EXPECT_TRUE(a != b); + EXPECT_FALSE(a == b); + EXPECT_TRUE(a < b); + EXPECT_TRUE(a <= b); + EXPECT_FALSE(a > b); + EXPECT_FALSE(a >= b); + } + { + paddle::StringPiece a, b; + EXPECT_TRUE(a == b); + EXPECT_FALSE(a != b); + EXPECT_FALSE(a < b); + EXPECT_FALSE(a > b); + EXPECT_TRUE(a <= b); + EXPECT_TRUE(a >= b); + } +}