| OLD | NEW |
| (Empty) |
| 1 {%- import "struct_macros.tmpl" as struct_macros %} | |
| 2 {%- set class_name = struct.name ~ "_Data" %} | |
| 3 class {{class_name}} { | |
| 4 public: | |
| 5 static {{class_name}}* New(mojo::internal::Buffer* buf) { | |
| 6 return new (buf->Allocate(sizeof({{class_name}}))) | |
| 7 {{class_name}}(); | |
| 8 } | |
| 9 | |
| 10 static bool Validate(const void* data, | |
| 11 mojo::internal::BoundsChecker* bounds_checker) { | |
| 12 {{ struct_macros.validate(struct, class_name)|indent(4) }} | |
| 13 } | |
| 14 | |
| 15 mojo::internal::StructHeader header_; | |
| 16 {{struct_macros.fields(struct)}} | |
| 17 | |
| 18 void EncodePointersAndHandles(std::vector<mojo::Handle>* handles) { | |
| 19 {{ struct_macros.encodes(struct)|indent(4) }} | |
| 20 } | |
| 21 | |
| 22 void DecodePointersAndHandles(std::vector<mojo::Handle>* handles) { | |
| 23 {{ struct_macros.decodes(struct)|indent(4) }} | |
| 24 } | |
| 25 | |
| 26 private: | |
| 27 {{class_name}}() { | |
| 28 header_.num_bytes = sizeof(*this); | |
| 29 header_.num_fields = {{struct.packed.packed_fields|length}}; | |
| 30 } | |
| 31 }; | |
| 32 static_assert(sizeof({{class_name}}) == {{struct.packed|struct_size}}, | |
| 33 "Bad sizeof({{class_name}})"); | |
| OLD | NEW |