| Index: third_party/protobuf/src/google/protobuf/stubs/stringpiece.h
|
| diff --git a/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h b/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h
|
| index ec3ffd5b06f0a9cb6300faa2255064aacce62497..9167165940d24e88cc29be0fe4de98a8579205ac 100644
|
| --- a/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h
|
| +++ b/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h
|
| @@ -435,6 +435,44 @@ 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_, size_); }
|
| + private:
|
| + const char* data_;
|
| + stringpiece_ssize_type size_;
|
| +};
|
| +
|
| +} // namespace internal
|
| } // namespace protobuf
|
| } // namespace google
|
|
|
|
|