OLD | NEW |
| (Empty) |
1 {%- macro setters(struct) %} | |
2 {% for packed_field in struct.packed.packed_fields %} | |
3 {%- set type = packed_field.field.kind|cpp_type %} | |
4 {%- set name = packed_field.field.name %} | |
5 {%- if packed_field.field.kind|is_object_kind %} | |
6 void set_{{name}}({{type}} {{name}}) { {{name}}_.ptr = {{name}}; } | |
7 {%- else %} | |
8 void set_{{name}}({{type}} {{name}}) { {{name}}_ = {{name}}; } | |
9 {%- endif %} | |
10 {%- endfor %} | |
11 {%- endmacro %} | |
12 | |
13 {%- macro getters(struct) %} | |
14 {% for packed_field in struct.packed.packed_fields %} | |
15 {%- set type = packed_field.field.kind|cpp_type %} | |
16 {%- set name = packed_field.field.name %} | |
17 {%- if packed_field.field.kind|is_object_kind %} | |
18 const {{type}} {{name}}() const { return {{name}}_.ptr; } | |
19 {%- elif packed_field.field.kind|is_handle_kind %} | |
20 {{type}}* {{name}}() const { return &{{name}}_; } | |
21 {%- else %} | |
22 {{type}} {{name}}() const { return {{name}}_; } | |
23 {%- endif %} | |
24 {%- endfor %} | |
25 {%- endmacro %} | |
26 | |
27 {%- macro field_line(field) %} | |
28 {%- set type = field.kind|cpp_field_type %} | |
29 {%- set name = field.name -%} | |
30 {%- if field.kind.spec == 'b' -%} | |
31 uint8_t {{name}}_ : 1; | |
32 {%- elif field.kind|is_handle_kind -%} | |
33 mutable {{type}} {{name}}_; | |
34 {%- elif field.kind|is_enum_kind -%} | |
35 int32_t {{name}}_; | |
36 {%- else -%} | |
37 {{type}} {{name}}_; | |
38 {%- endif %} | |
39 {%- endmacro %} | |
40 | |
41 {%- macro fields(struct) %} | |
42 {%- for packed_field in struct.packed.packed_fields %} | |
43 {{field_line(packed_field.field)}} | |
44 {%- if not loop.last %} | |
45 {%- set next_pf = struct.packed.packed_fields[loop.index0 + 1] %} | |
46 {%- set pad = next_pf.offset - (packed_field.offset + packed_field.size) %
} | |
47 {%- if pad > 0 %} | |
48 uint8_t _pad{{loop.index0}}_[{{pad}}]; | |
49 {%- endif %} | |
50 {%- endif %} | |
51 {%- endfor -%} | |
52 | |
53 {%- set num_fields = struct.packed.packed_fields|length %} | |
54 {%- if num_fields > 0 %} | |
55 {%- set last_field = struct.packed.packed_fields[num_fields - 1] %} | |
56 {%- set offset = last_field.offset + last_field.size %} | |
57 {%- set pad = offset|get_pad(8) -%} | |
58 {%- if pad > 0 %} | |
59 uint8_t _padfinal_[{{pad}}]; | |
60 {%- endif %} | |
61 {%- endif %} | |
62 {%- endmacro %} | |
63 | |
64 {%- macro encodes(struct) -%} | |
65 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind -%} | |
66 mojo::internal::Encode(&{{pf.field.name}}_, handles); | |
67 {% endfor %} | |
68 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_handle_kind -%} | |
69 mojo::internal::EncodeHandle(&{{pf.field.name}}_, handles); | |
70 {% endfor %} | |
71 {%- endmacro -%} | |
72 | |
73 {%- macro decodes(struct) -%} | |
74 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_object_kind -%} | |
75 if (!mojo::internal::Decode(&{{pf.field.name}}_, message)) | |
76 return false; | |
77 {% endfor %} | |
78 {%- for pf in struct.packed.packed_fields if pf.field.kind|is_handle_kind -%} | |
79 if (!mojo::internal::DecodeHandle(&{{pf.field.name}}_, | |
80 message->mutable_handles())) | |
81 return false; | |
82 {% endfor %} | |
83 {%- endmacro -%} | |
OLD | NEW |