diff options
author | temporal <temporal@630680e5-0e50-0410-840e-4b1c322b438d> | 2008-08-13 03:15:00 +0000 |
---|---|---|
committer | temporal <temporal@630680e5-0e50-0410-840e-4b1c322b438d> | 2008-08-13 03:15:00 +0000 |
commit | 779f61c6a3ce02a119e28e802f229e61b69b9046 (patch) | |
tree | 9131ef5f0acdc3d708a795fc6703488674741ee0 /src/google/protobuf/message.cc | |
parent | a0f27fcd96c5bf2509ca88cca54f00b78f7b8bc5 (diff) |
Integrate recent changes from google3.
protoc
- New flags --encode and --decode can be used to convert between protobuf text
format and binary format from the command-line.
- New flag --descriptor_set_out can be used to write FileDescriptorProtos for
all parsed files directly into a single output file. This is particularly
useful if you wish to parse .proto files from programs written in languages
other than C++: just run protoc as a background process and have it output
a FileDescriptorList, then parse that natively.
C++
- Reflection objects are now per-class rather than per-instance. To make this
possible, the Reflection interface had to be changed such that all methods
take the Message instance as a parameter. This change improves performance
significantly in memory-bandwidth-limited use cases, since it makes the
message objects smaller. Note that source-incompatible interface changes
like this will not be made again after the library leaves beta.
Python
- MergeFrom(message) and CopyFrom(message) are now implemented.
- SerializeToString() raises an exception if the message is missing required
fields.
- Code organization improvements.
- Fixed doc comments for RpcController and RpcChannel, which had somehow been
swapped.
Diffstat (limited to 'src/google/protobuf/message.cc')
-rw-r--r-- | src/google/protobuf/message.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/google/protobuf/message.cc b/src/google/protobuf/message.cc index f740ef18..b9b1ac6c 100644 --- a/src/google/protobuf/message.cc +++ b/src/google/protobuf/message.cc @@ -50,7 +50,6 @@ static string InitializationErrorMessage(const char* action, } Message::~Message() {} -Message::Reflection::~Reflection() {} void Message::MergeFrom(const Message& from) { const Descriptor* descriptor = GetDescriptor(); @@ -58,7 +57,7 @@ void Message::MergeFrom(const Message& from) { << ": Tried to merge from a message with a different type. " "to: " << descriptor->full_name() << ", " "from:" << from.GetDescriptor()->full_name(); - ReflectionOps::Merge(descriptor, *from.GetReflection(), GetReflection()); + ReflectionOps::Merge(from, this); } void Message::CopyFrom(const Message& from) { @@ -67,20 +66,19 @@ void Message::CopyFrom(const Message& from) { << ": Tried to copy from a message with a different type." "to: " << descriptor->full_name() << ", " "from:" << from.GetDescriptor()->full_name(); - ReflectionOps::Copy(descriptor, *from.GetReflection(), GetReflection()); + ReflectionOps::Copy(from, this); } void Message::Clear() { - ReflectionOps::Clear(GetDescriptor(), GetReflection()); + ReflectionOps::Clear(this); } bool Message::IsInitialized() const { - return ReflectionOps::IsInitialized(GetDescriptor(), *GetReflection()); + return ReflectionOps::IsInitialized(*this); } void Message::FindInitializationErrors(vector<string>* errors) const { - return ReflectionOps::FindInitializationErrors( - GetDescriptor(), *GetReflection(), "", errors); + return ReflectionOps::FindInitializationErrors(*this, "", errors); } string Message::InitializationErrorString() const { @@ -96,12 +94,11 @@ void Message::CheckInitialized() const { } void Message::DiscardUnknownFields() { - return ReflectionOps::DiscardUnknownFields(GetDescriptor(), GetReflection()); + return ReflectionOps::DiscardUnknownFields(this); } bool Message::MergePartialFromCodedStream(io::CodedInputStream* input) { - return WireFormat::ParseAndMergePartial( - GetDescriptor(), input, GetReflection()); + return WireFormat::ParseAndMergePartial(input, this); } bool Message::MergeFromCodedStream(io::CodedInputStream* input) { @@ -178,12 +175,11 @@ bool Message::ParsePartialFromIstream(istream* input) { bool Message::SerializeWithCachedSizes( io::CodedOutputStream* output) const { - return WireFormat::SerializeWithCachedSizes( - GetDescriptor(), GetReflection(), GetCachedSize(), output); + return WireFormat::SerializeWithCachedSizes(*this, GetCachedSize(), output); } int Message::ByteSize() const { - int size = WireFormat::ByteSize(GetDescriptor(), GetReflection()); + int size = WireFormat::ByteSize(*this); SetCachedSize(size); return size; } @@ -281,6 +277,8 @@ bool Message::SerializePartialToOstream(ostream* output) const { } +Reflection::~Reflection() {} + // =================================================================== // MessageFactory |