| OLD | NEW |
| (Empty) |
| 1 {%- set class_name = union.name ~ "_Data" -%} | |
| 2 {%- set enum_name = union.name ~ "_Tag" -%} | |
| 3 {%- set union_name = union.name ~ "_Union" -%} | |
| 4 | |
| 5 class {{class_name}} { | |
| 6 public: | |
| 7 static {{class_name}}* New(mojo::internal::Buffer* buf); | |
| 8 | |
| 9 static bool Validate(const void* data, | |
| 10 mojo::internal::BoundsChecker* bounds_checker); | |
| 11 | |
| 12 enum class {{enum_name}} : uint64_t { | |
| 13 {% for field in union.fields %} | |
| 14 {{field.name|upper}}, | |
| 15 {%- endfor %} | |
| 16 }; | |
| 17 | |
| 18 union MOJO_ALIGNAS(8) {{union_name}} { | |
| 19 {% for field in union.fields %} | |
| 20 {{field.kind|cpp_field_type}} {{field.name}}; | |
| 21 {%- endfor %} | |
| 22 }; | |
| 23 | |
| 24 {{enum_name}} tag; | |
| 25 {{union_name}} data; | |
| 26 | |
| 27 void EncodePointersAndHandles(std::vector<mojo::Handle>* handles); | |
| 28 void DecodePointersAndHandles(std::vector<mojo::Handle>* handles); | |
| 29 | |
| 30 private: | |
| 31 {{class_name}}(); | |
| 32 ~{{class_name}}() = delete; | |
| 33 }; | |
| 34 static_assert(sizeof({{class_name}}) == 16, | |
| 35 "Bad sizeof({{class_name}})"); | |
| OLD | NEW |