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/compiler/parser.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/compiler/parser.cc')
-rw-r--r-- | src/google/protobuf/compiler/parser.cc | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/google/protobuf/compiler/parser.cc b/src/google/protobuf/compiler/parser.cc index 3b73530b..7a148c5a 100644 --- a/src/google/protobuf/compiler/parser.cc +++ b/src/google/protobuf/compiler/parser.cc @@ -604,7 +604,7 @@ bool Parser::ParseDefaultAssignment(FieldDescriptorProto* field) { } bool Parser::ParseOptionAssignment(Message* options) { - Message::Reflection* reflection = options->GetReflection(); + const Reflection* reflection = options->GetReflection(); const Descriptor* descriptor = options->GetDescriptor(); // Parse name. @@ -623,7 +623,7 @@ bool Parser::ParseOptionAssignment(Message* options) { AddError(line, column, "Not implemented: repeated options."); return false; } - if (reflection->HasField(field)) { + if (reflection->HasField(*options, field)) { AddError(line, column, "Option \"" + name + "\" was already set."); return false; } @@ -638,7 +638,7 @@ bool Parser::ParseOptionAssignment(Message* options) { // This field is a message/group. The user must identify a field within // it to set. - return ParseOptionAssignment(reflection->MutableMessage(field)); + return ParseOptionAssignment(reflection->MutableMessage(options, field)); } DO(Consume("=")); @@ -651,7 +651,7 @@ bool Parser::ParseOptionAssignment(Message* options) { uint64 max_value = kint32max; if (is_negative) ++max_value; DO(ConsumeInteger64(max_value, &value, "Expected integer.")); - reflection->SetInt32(field, is_negative ? -value : value); + reflection->SetInt32(options, field, is_negative ? -value : value); break; } @@ -661,21 +661,21 @@ bool Parser::ParseOptionAssignment(Message* options) { uint64 max_value = kint64max; if (is_negative) ++max_value; DO(ConsumeInteger64(max_value, &value, "Expected integer.")); - reflection->SetInt64(field, is_negative ? -value : value); + reflection->SetInt64(options, field, is_negative ? -value : value); break; } case FieldDescriptor::CPPTYPE_UINT32: { uint64 value; DO(ConsumeInteger64(kuint32max, &value, "Expected integer.")); - reflection->SetUInt32(field, value); + reflection->SetUInt32(options, field, value); break; } case FieldDescriptor::CPPTYPE_UINT64: { uint64 value; DO(ConsumeInteger64(kuint64max, &value, "Expected integer.")); - reflection->SetUInt64(field, value); + reflection->SetUInt64(options, field, value); break; } @@ -683,7 +683,7 @@ bool Parser::ParseOptionAssignment(Message* options) { double value; bool is_negative = TryConsume("-"); DO(ConsumeNumber(&value, "Expected number.")); - reflection->SetDouble(field, is_negative ? -value : value); + reflection->SetDouble(options, field, is_negative ? -value : value); break; } @@ -691,15 +691,15 @@ bool Parser::ParseOptionAssignment(Message* options) { double value; bool is_negative = TryConsume("-"); DO(ConsumeNumber(&value, "Expected number.")); - reflection->SetFloat(field, is_negative ? -value : value); + reflection->SetFloat(options, field, is_negative ? -value : value); break; } case FieldDescriptor::CPPTYPE_BOOL: if (TryConsume("true")) { - reflection->SetBool(field, true); + reflection->SetBool(options, field, true); } else if (TryConsume("false")) { - reflection->SetBool(field, false); + reflection->SetBool(options, field, false); } else { AddError("Expected \"true\" or \"false\"."); return false; @@ -719,14 +719,14 @@ bool Parser::ParseOptionAssignment(Message* options) { "named \"" + value_name + "\"."); return false; } - reflection->SetEnum(field, value); + reflection->SetEnum(options, field, value); break; } case FieldDescriptor::CPPTYPE_STRING: { string value; DO(ConsumeString(&value, "Expected string.")); - reflection->SetString(field, value); + reflection->SetString(options, field, value); break; } |