Add support for parsing proto map fields (#7613)

* Add support for proto 3 map to fbs gen

* Run clang-format

* Update proto golden test

* Rename variables

* Remove iostream

* Remove iostream

* Run clang format

Co-authored-by: Derek Bailey <derekbailey@google.com>
This commit is contained in:
Michael Le
2022-11-08 10:51:24 -08:00
committed by GitHub
parent dbc58ab77c
commit 001adf782d
12 changed files with 143 additions and 3 deletions

View File

@@ -201,4 +201,4 @@ void ParseProtoBufAsciiTest() {
}
} // namespace tests
} // namespace flatbuffers
} // namespace flatbuffers

View File

@@ -0,0 +1,24 @@
#!/bin/bash
#
# Copyright 2022 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
pushd "$(dirname $0)" >/dev/null
./../../flatc --proto test.proto && mv test.fbs test_include.golden
./../../flatc --proto --gen-all test.proto && mv test.fbs test.golden
./../../flatc --proto --oneof-union test.proto && mv test.fbs test_union_include.golden
./../../flatc --proto --gen-all --oneof-union test.proto && mv test.fbs test_union.golden
./../../flatc --proto --gen-all --proto-namespace-suffix test_namespace_suffix test.proto && mv test.fbs test_suffix.golden
./../../flatc --proto --gen-all --proto-namespace-suffix test_namespace_suffix --oneof-union test.proto && mv test.fbs test_union_suffix.golden

View File

@@ -54,6 +54,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.ProtoMessage_;
@@ -73,3 +75,13 @@ table Anonymous0 {
t:proto.test.ProtoMessage_.OtherMessage;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.ProtoMessage_.OtherMessage;
}

View File

@@ -71,4 +71,7 @@ message ProtoMessage {
optional float u = 34 [default = inf];
optional float v = 35 [default = +inf];
optional float w = 36 [default = -inf];
map<string, float> grades = 37;
map<string, OtherMessage> other_message_map = 38;
}

View File

@@ -52,6 +52,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.ProtoMessage_;
@@ -71,3 +73,13 @@ table Anonymous0 {
t:proto.test.ProtoMessage_.OtherMessage;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.ProtoMessage_.OtherMessage;
}

View File

@@ -54,6 +54,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.test_namespace_suffix.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.test_namespace_suffix.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.test_namespace_suffix.ProtoMessage_;
@@ -73,3 +75,13 @@ table Anonymous0 {
t:proto.test.test_namespace_suffix.ProtoMessage_.OtherMessage;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.test_namespace_suffix.ProtoMessage_.OtherMessage;
}

View File

@@ -64,6 +64,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.ProtoMessage_;
@@ -75,3 +77,13 @@ table OtherMessage {
foo_bar_baz:proto.test.ProtoMessage_.OtherMessage_.ProtoEnum;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.ProtoMessage_.OtherMessage;
}

View File

@@ -62,6 +62,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.ProtoMessage_;
@@ -73,3 +75,13 @@ table OtherMessage {
foo_bar_baz:proto.test.ProtoMessage_.OtherMessage_.ProtoEnum;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.ProtoMessage_.OtherMessage;
}

View File

@@ -64,6 +64,8 @@ table ProtoMessage {
u:float = +inf;
v:float = +inf;
w:float = -inf;
grades:[proto.test.test_namespace_suffix.ProtoMessage_.GradesEntry];
other_message_map:[proto.test.test_namespace_suffix.ProtoMessage_.OtherMessageMapEntry];
}
namespace proto.test.test_namespace_suffix.ProtoMessage_;
@@ -75,3 +77,13 @@ table OtherMessage {
foo_bar_baz:proto.test.test_namespace_suffix.ProtoMessage_.OtherMessage_.ProtoEnum;
}
table GradesEntry {
key:string (key);
value:float;
}
table OtherMessageMapEntry {
key:string (key);
value:proto.test.test_namespace_suffix.ProtoMessage_.OtherMessage;
}