|
@@ -426,49 +426,6 @@ inline bool operator>=(StringPiece x, StringPiece y) {
|
|
|
// allow StringPiece to be logged
|
|
|
extern std::ostream& operator<<(std::ostream& o, StringPiece piece);
|
|
|
|
|
|
-namespace internal {
|
|
|
-// StringPiece is not a POD and can not be used in an union (pre C++11). We
|
|
|
-// need a POD version of it.
|
|
|
-struct StringPiecePod {
|
|
|
- // Create from a StringPiece.
|
|
|
- static StringPiecePod CreateFromStringPiece(StringPiece str) {
|
|
|
- StringPiecePod pod;
|
|
|
- pod.data_ = str.data();
|
|
|
- pod.size_ = str.size();
|
|
|
- return pod;
|
|
|
- }
|
|
|
-
|
|
|
- // Cast to StringPiece.
|
|
|
- operator StringPiece() const { return StringPiece(data_, size_); }
|
|
|
-
|
|
|
- bool operator==(const char* value) const {
|
|
|
- return StringPiece(data_, size_) == StringPiece(value);
|
|
|
- }
|
|
|
-
|
|
|
- char operator[](stringpiece_ssize_type i) const {
|
|
|
- assert(0 <= i);
|
|
|
- assert(i < size_);
|
|
|
- return data_[i];
|
|
|
- }
|
|
|
-
|
|
|
- const char* data() const { return data_; }
|
|
|
-
|
|
|
- stringpiece_ssize_type size() const {
|
|
|
- return size_;
|
|
|
- }
|
|
|
-
|
|
|
- std::string ToString() const {
|
|
|
- return std::string(data_, static_cast<size_t>(size_));
|
|
|
- }
|
|
|
-
|
|
|
- explicit operator std::string() const { return ToString(); }
|
|
|
-
|
|
|
- private:
|
|
|
- const char* data_;
|
|
|
- stringpiece_ssize_type size_;
|
|
|
-};
|
|
|
-
|
|
|
-} // namespace internal
|
|
|
} // namespace protobuf
|
|
|
} // namespace google
|
|
|
|