Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58e60dbf authored by Ethan Lee's avatar Ethan Lee
Browse files

Add support in protoc-gen-cppstream for optional fields in proto3

This support is optional. experimental_allow_proto3_optional must be
included in the --cppstream_opt field to enable this.

Test: m -j frameworks/base/tools/streaming_proto
Fixes: 291329285
Change-Id: I7b985b84edf0cda46d06a9ebc39df574695ef418
parent fe699597
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
mwachens@google.com
+6 −4
Original line number Diff line number Diff line
@@ -119,9 +119,8 @@ write_message(stringstream& text, const DescriptorProto& message, const string&
    text << endl;
}

static void
write_header_file(CodeGeneratorResponse* response, const FileDescriptorProto& file_descriptor)
{
static void write_header_file(const string& request_parameter, CodeGeneratorResponse* response,
                              const FileDescriptorProto& file_descriptor) {
    stringstream text;

    text << "// Generated by protoc-gen-cppstream. DO NOT MODIFY." << endl;
@@ -159,6 +158,9 @@ write_header_file(CodeGeneratorResponse* response, const FileDescriptorProto& fi
    text << endl;
    text << "#endif // " << header << endl;

    if (request_parameter.find("experimental_allow_proto3_optional") != string::npos) {
        response->set_supported_features(CodeGeneratorResponse::FEATURE_PROTO3_OPTIONAL);
    }
    CodeGeneratorResponse::File* file_response = response->add_file();
    file_response->set_name(make_filename(file_descriptor));
    file_response->set_content(text.str());
@@ -182,7 +184,7 @@ int main(int argc, char const *argv[])
    for (int i=0; i<N; i++) {
        const FileDescriptorProto& file_descriptor = request.proto_file(i);
        if (should_generate_for_file(request, file_descriptor.name())) {
            write_header_file(&response, file_descriptor);
            write_header_file(request.parameter(), &response, file_descriptor);
        }
    }