diff options
Diffstat (limited to 'proto_writer.cc')
-rw-r--r-- | proto_writer.cc | 12 |
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); |