diff options
Diffstat (limited to 'src/google/protobuf/unknown_field_set.h')
-rw-r--r-- | src/google/protobuf/unknown_field_set.h | 67 |
1 files changed, 53 insertions, 14 deletions
diff --git a/src/google/protobuf/unknown_field_set.h b/src/google/protobuf/unknown_field_set.h index 619855ed..7ba33da5 100644 --- a/src/google/protobuf/unknown_field_set.h +++ b/src/google/protobuf/unknown_field_set.h @@ -43,7 +43,19 @@ #include <vector> #include <google/protobuf/stubs/common.h> #include <google/protobuf/stubs/logging.h> +#include <google/protobuf/io/coded_stream.h> #include <google/protobuf/message_lite.h> +#include <google/protobuf/port.h> + +#include <google/protobuf/port_def.inc> + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +#include <google/protobuf/parse_context.h> +#endif + +#ifdef SWIG +#error "You cannot SWIG proto headers" +#endif namespace google { namespace protobuf { @@ -74,7 +86,7 @@ class UnknownField; // below // // This class is necessarily tied to the protocol buffer wire format, unlike // the Reflection interface which is independent of any serialization scheme. -class LIBPROTOBUF_EXPORT UnknownFieldSet { +class PROTOBUF_EXPORT UnknownFieldSet { public: UnknownFieldSet(); ~UnknownFieldSet(); @@ -135,8 +147,8 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { void AddVarint(int number, uint64 value); void AddFixed32(int number, uint32 value); void AddFixed64(int number, uint64 value); - void AddLengthDelimited(int number, const string& value); - string* AddLengthDelimited(int number); + void AddLengthDelimited(int number, const std::string& value); + std::string* AddLengthDelimited(int number); UnknownFieldSet* AddGroup(int number); // Adds an unknown field from another set. @@ -158,7 +170,7 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { bool ParseFromCodedStream(io::CodedInputStream* input); bool ParseFromZeroCopyStream(io::ZeroCopyInputStream* input); bool ParseFromArray(const void* data, int size); - inline bool ParseFromString(const string& data) { + inline bool ParseFromString(const std::string& data) { return ParseFromArray(data.data(), static_cast<int>(data.size())); } @@ -181,8 +193,34 @@ class LIBPROTOBUF_EXPORT UnknownFieldSet { GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(UnknownFieldSet); }; +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +namespace internal { +inline void WriteVarint(uint32 num, uint64 val, UnknownFieldSet* unknown) { + unknown->AddVarint(num, val); +} +inline void WriteLengthDelimited(uint32 num, StringPiece val, + UnknownFieldSet* unknown) { + unknown->AddLengthDelimited(num)->assign(val.data(), val.size()); +} + +const char* PackedValidEnumParser(const char* begin, const char* end, + void* object, ParseContext* ctx); +const char* PackedValidEnumParserArg(const char* begin, const char* end, + void* object, ParseContext* ctx); + +const char* UnknownGroupParse(const char* begin, const char* end, void* object, + ParseContext* ctx); +std::pair<const char*, bool> UnknownFieldParse(uint64 tag, ParseClosure parent, + const char* begin, + const char* end, + UnknownFieldSet* unknown, + ParseContext* ctx); + +} // namespace internal +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + // Represents one field in an UnknownFieldSet. -class LIBPROTOBUF_EXPORT UnknownField { +class PROTOBUF_EXPORT UnknownField { public: enum Type { TYPE_VARINT, @@ -204,14 +242,14 @@ class LIBPROTOBUF_EXPORT UnknownField { inline uint64 varint() const; inline uint32 fixed32() const; inline uint64 fixed64() const; - inline const string& length_delimited() const; + inline const std::string& length_delimited() const; inline const UnknownFieldSet& group() const; inline void set_varint(uint64 value); inline void set_fixed32(uint32 value); inline void set_fixed64(uint64 value); - inline void set_length_delimited(const string& value); - inline string* mutable_length_delimited(); + inline void set_length_delimited(const std::string& value); + inline std::string* mutable_length_delimited(); inline UnknownFieldSet* mutable_group(); // Serialization API. @@ -239,7 +277,7 @@ class LIBPROTOBUF_EXPORT UnknownField { inline void SetType(Type type); union LengthDelimited { - string* string_value_; + std::string* string_value_; }; uint32 number_; @@ -289,7 +327,7 @@ inline UnknownField* UnknownFieldSet::mutable_field(int index) { } inline void UnknownFieldSet::AddLengthDelimited( - int number, const string& value) { + int number, const std::string& value) { AddLengthDelimited(number)->assign(value); } @@ -313,7 +351,7 @@ inline uint64 UnknownField::fixed64() const { assert(type() == TYPE_FIXED64); return data_.fixed64_; } -inline const string& UnknownField::length_delimited() const { +inline const std::string& UnknownField::length_delimited() const { assert(type() == TYPE_LENGTH_DELIMITED); return *data_.length_delimited_.string_value_; } @@ -334,11 +372,11 @@ inline void UnknownField::set_fixed64(uint64 value) { assert(type() == TYPE_FIXED64); data_.fixed64_ = value; } -inline void UnknownField::set_length_delimited(const string& value) { +inline void UnknownField::set_length_delimited(const std::string& value) { assert(type() == TYPE_LENGTH_DELIMITED); data_.length_delimited_.string_value_->assign(value); } -inline string* UnknownField::mutable_length_delimited() { +inline std::string* UnknownField::mutable_length_delimited() { assert(type() == TYPE_LENGTH_DELIMITED); return data_.length_delimited_.string_value_; } @@ -358,6 +396,7 @@ inline void UnknownField::SetType(Type type) { } // namespace protobuf - } // namespace google + +#include <google/protobuf/port_undef.inc> #endif // GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__ |