diff options
author | Yi Jin <jinyithu@google.com> | 2017-12-12 12:53:51 -0800 |
---|---|---|
committer | Yi Jin <jinyithu@google.com> | 2017-12-12 13:20:46 -0800 |
commit | f77a07df1cc71d1f25454de1b5c7da301541b837 (patch) | |
tree | c8d95c91cf7fe4c30b70eb494aec5c55cc72d54b /tools/streaming_proto/cpp/main.cpp | |
parent | d04c00a47907452a76d31e7183e5cc37bdf4dbf3 (diff) |
Create a new stream option which generates field name to id mapping
recursively for all its submessages.
Also fix the wrong prefix for ro.build.version.XXX in proto.
It is safe to adjust proto number for now since it is not used yet.
Bug: 68774852
Test: atest incident_helper_test
Change-Id: I46e43a407da6efc393eb3c39733aaf25a5cceb13
Diffstat (limited to 'tools/streaming_proto/cpp/main.cpp')
-rw-r--r-- | tools/streaming_proto/cpp/main.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/streaming_proto/cpp/main.cpp b/tools/streaming_proto/cpp/main.cpp index 477902065f99..745b3dc51181 100644 --- a/tools/streaming_proto/cpp/main.cpp +++ b/tools/streaming_proto/cpp/main.cpp @@ -85,11 +85,17 @@ should_generate_fields_mapping(const DescriptorProto& message) return message.options().GetExtension(stream_msg).enable_fields_mapping(); } +static inline bool +should_generate_fields_mapping_recursively(const DescriptorProto& message) { + return message.options().GetExtension(stream_msg).enable_fields_mapping_recursively(); +} + static void -write_message(stringstream& text, const DescriptorProto& message, const string& indent) +write_message(stringstream& text, const DescriptorProto& message, const string& indent, bool genMapping) { int N; const string indented = indent + INDENT; + genMapping |= should_generate_fields_mapping_recursively(message); text << indent << "// message " << message.name() << endl; text << indent << "namespace " << message.name() << " {" << endl; @@ -103,7 +109,7 @@ write_message(stringstream& text, const DescriptorProto& message, const string& // Nested classes N = message.nested_type_size(); for (int i=0; i<N; i++) { - write_message(text, message.nested_type(i), indented); + write_message(text, message.nested_type(i), indented, genMapping); } // Fields @@ -112,7 +118,7 @@ write_message(stringstream& text, const DescriptorProto& message, const string& write_field(text, message.field(i), indented); } - if (should_generate_fields_mapping(message)) { + if (genMapping | should_generate_fields_mapping(message)) { N = message.field_size(); text << indented << "const int _FIELD_COUNT = " << N << ";" << endl; text << indented << "const char* _FIELD_NAMES[" << N << "] = {" << endl; @@ -161,7 +167,7 @@ write_header_file(CodeGeneratorResponse* response, const FileDescriptorProto& fi N = file_descriptor.message_type_size(); for (size_t i=0; i<N; i++) { - write_message(text, file_descriptor.message_type(i), ""); + write_message(text, file_descriptor.message_type(i), "", false); } for (vector<string>::iterator it = namespaces.begin(); it != namespaces.end(); it++) { |