From a0f27fcd96c5bf2509ca88cca54f00b78f7b8bc5 Mon Sep 17 00:00:00 2001 From: temporal Date: Wed, 6 Aug 2008 01:12:21 +0000 Subject: Heuristically detect sub-messages when printing unknown fields. Patch mostly written by Dilip Joseph . --- src/google/protobuf/unknown_field_set.cc | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/google/protobuf/unknown_field_set.cc') diff --git a/src/google/protobuf/unknown_field_set.cc b/src/google/protobuf/unknown_field_set.cc index 2f44901e..3d45002e 100644 --- a/src/google/protobuf/unknown_field_set.cc +++ b/src/google/protobuf/unknown_field_set.cc @@ -20,6 +20,10 @@ #include #include +#include +#include +#include +#include namespace google { namespace protobuf { @@ -57,6 +61,34 @@ void UnknownFieldSet::MergeFrom(const UnknownFieldSet& other) { } } +bool UnknownFieldSet::MergeFromCodedStream(io::CodedInputStream* input) { + + UnknownFieldSet other; + if (internal::WireFormat::SkipMessage(input, &other) && + input->ConsumedEntireMessage()) { + MergeFrom(other); + return true; + } else { + return false; + } +} + +bool UnknownFieldSet::ParseFromCodedStream(io::CodedInputStream* input) { + Clear(); + return MergeFromCodedStream(input); +} + +bool UnknownFieldSet::ParseFromZeroCopyStream(io::ZeroCopyInputStream* input) { + io::CodedInputStream coded_input(input); + return ParseFromCodedStream(&coded_input) && + coded_input.ConsumedEntireMessage(); +} + +bool UnknownFieldSet::ParseFromArray(const void* data, int size) { + io::ArrayInputStream input(data, size); + return ParseFromZeroCopyStream(&input); +} + const UnknownField* UnknownFieldSet::FindFieldByNumber(int number) const { if (internal_ == NULL) return NULL; -- cgit v1.2.3