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 |