aboutsummaryrefslogtreecommitdiff
path: root/proto_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'proto_writer.cc')
-rw-r--r--proto_writer.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/proto_writer.cc b/proto_writer.cc
index 694d65e..a4ee972 100644
--- a/proto_writer.cc
+++ b/proto_writer.cc
@@ -74,6 +74,7 @@ struct Transform {
void operator()(const stg::BaseClass&, uint32_t);
void operator()(const stg::Method&, uint32_t);
void operator()(const stg::Member&, uint32_t);
+ void operator()(const stg::VariantMember&, uint32_t);
void operator()(const stg::StructUnion&, uint32_t);
void operator()(const stg::Enumeration&, uint32_t);
void operator()(const stg::Function&, uint32_t);
@@ -213,6 +214,17 @@ void Transform<MapId>::operator()(const stg::Member& x, uint32_t id) {
}
template <typename MapId>
+void Transform<MapId>::operator()(const stg::VariantMember& x, uint32_t id) {
+ auto& variant_member = *stg.add_variant_member();
+ variant_member.set_id(id);
+ variant_member.set_name(x.name);
+ if (x.discriminant_value) {
+ variant_member.set_discriminant_value(*x.discriminant_value);
+ }
+ variant_member.set_type_id((*this)(x.type_id));
+}
+
+template <typename MapId>
void Transform<MapId>::operator()(const stg::StructUnion& x, uint32_t id) {
auto& struct_union = *stg.add_struct_union();
struct_union.set_id(id);