From 779f61c6a3ce02a119e28e802f229e61b69b9046 Mon Sep 17 00:00:00 2001 From: temporal Date: Wed, 13 Aug 2008 03:15:00 +0000 Subject: 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. --- src/google/protobuf/reflection_ops.h | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'src/google/protobuf/reflection_ops.h') diff --git a/src/google/protobuf/reflection_ops.h b/src/google/protobuf/reflection_ops.h index 4a7f76bb..b6922a63 100644 --- a/src/google/protobuf/reflection_ops.h +++ b/src/google/protobuf/reflection_ops.h @@ -30,7 +30,7 @@ namespace google { namespace protobuf { namespace internal { -// Basic operations that can be performed using Message::Reflection. +// Basic operations that can be performed using reflection. // These can be used as a cheap way to implement the corresponding // methods of the Message interface, though they are likely to be // slower than implementations tailored for the specific message type. @@ -41,24 +41,16 @@ namespace internal { // This class is really a namespace that contains only static methods. class LIBPROTOBUF_EXPORT ReflectionOps { public: - static void Copy(const Descriptor* descriptor, - const Message::Reflection& from, - Message::Reflection* to); - static void Merge(const Descriptor* descriptor, - const Message::Reflection& from, - Message::Reflection* to); - static void Clear(const Descriptor* descriptor, - Message::Reflection* reflection); - static bool IsInitialized(const Descriptor* descriptor, - const Message::Reflection& reflection); - static void DiscardUnknownFields(const Descriptor* descriptor, - Message::Reflection* reflection); + static void Copy(const Message& from, Message* to); + static void Merge(const Message& from, Message* to); + static void Clear(Message* message); + static bool IsInitialized(const Message& message); + static void DiscardUnknownFields(Message* message); // Finds all unset required fields in the message and adds their full // paths (e.g. "foo.bar[5].baz") to *names. "prefix" will be attached to // the front of each name. - static void FindInitializationErrors(const Descriptor* descriptor, - const Message::Reflection& reflection, + static void FindInitializationErrors(const Message& message, const string& prefix, vector* errors); -- cgit v1.2.3