OLD | NEW |
1 {% from "enum_macros.tmpl" import enum_decl -%} | 1 {% from "enum_macros.tmpl" import enum_decl -%} |
2 | 2 |
3 class {{struct.name}} { | 3 class {{struct.name}} { |
4 public: | 4 public: |
5 using Data_ = internal::{{struct.name}}_Data; | 5 using Data_ = internal::{{struct.name}}_Data; |
6 | 6 |
7 // TODO(yzshen): Remove Reader. | |
8 using Reader = {{struct.name}}_Reader; | |
9 | |
10 {#--- Enums #} | 7 {#--- Enums #} |
11 {%- for enum in struct.enums -%} | 8 {%- for enum in struct.enums -%} |
12 {{enum_decl(enum)|indent(2)}} | 9 {{enum_decl(enum)|indent(2)}} |
13 {%- endfor %} | 10 {%- endfor %} |
14 | 11 |
15 {#--- Constants #} | 12 {#--- Constants #} |
16 {%- for constant in struct.constants %} | 13 {%- for constant in struct.constants %} |
17 {%- if constant.kind|is_integral_kind %} | 14 {%- if constant.kind|is_integral_kind %} |
18 static const {{constant.kind|cpp_pod_type}} {{constant.name}} = {{constant|con
stant_value}}; | 15 static const {{constant.kind|cpp_pod_type}} {{constant.name}} = {{constant|con
stant_value}}; |
19 {%- else %} | 16 {%- else %} |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 } | 51 } |
55 | 52 |
56 {#--- Struct members #} | 53 {#--- Struct members #} |
57 {% for field in struct.fields %} | 54 {% for field in struct.fields %} |
58 {%- set type = field.kind|cpp_wrapper_type %} | 55 {%- set type = field.kind|cpp_wrapper_type %} |
59 {%- set name = field.name %} | 56 {%- set name = field.name %} |
60 {{type}} {{name}}; | 57 {{type}} {{name}}; |
61 {%- endfor %} | 58 {%- endfor %} |
62 }; | 59 }; |
63 | 60 |
64 {# TODO(yzshen): Redo the Reader interface. #} | |
65 {# NOTE: Generated Reader instances are intentionally cheap to copy and devoid | |
66 of heap allocations. They should stay this way. #} | |
67 // TODO(yzshen): Remove this. | |
68 class {{struct.name}}_Reader { | |
69 public: | |
70 {{struct.name}}_Reader(internal::{{struct.name}}_Data* data, | |
71 mojo::internal::SerializationContext* context); | |
72 | |
73 {%- for pf in struct.packed.packed_fields_in_ordinal_order %} | |
74 {%- set kind = pf.field.kind -%} | |
75 {%- set name = pf.field.name -%} | |
76 {%- if kind|is_nullable_kind %} | |
77 bool has_{{name}}() const; | |
78 {%- endif %} | |
79 {%- if kind|is_struct_kind and not kind|is_native_only_kind %} | |
80 {{kind|get_name_for_kind}}_Reader {{name}}() const; | |
81 {%- elif kind|is_string_kind %} | |
82 base::StringPiece {{name}}() const; | |
83 {%- elif kind|is_union_kind %} | |
84 // TODO(rockot): Support reading unions. ({{name}}() omitted) | |
85 {%- elif kind|is_object_kind %} | |
86 // TODO(rockot): Support reading other object kinds. ({{name}}() omitted) | |
87 {%- elif kind|is_any_handle_kind %} | |
88 // TODO(rockot): Support reading handles. ({{name}}() omitted) | |
89 {%- elif kind|is_interface_kind %} | |
90 // TODO(rockot): Support reading interfaces. ({{name}}() omitted) | |
91 {%- elif kind|is_interface_request_kind %} | |
92 // TODO(rockot): Support reading interface requests. ({{name}}() omitted) | |
93 {%- elif kind|is_associated_kind %} | |
94 // TODO(rockot): Support reading associated kinds. ({{name}}() omitted) | |
95 {%- elif kind|is_enum_kind %} | |
96 {{kind|cpp_result_type}} {{name}}() const { | |
97 return static_cast<{{kind|cpp_result_type}}>(data_->{{name}}); | |
98 } | |
99 {%- else %} | |
100 {{kind|cpp_result_type}} {{name}}() const { return data_->{{name}}; } | |
101 {%- endif %} | |
102 {%- endfor %} | |
103 | |
104 private: | |
105 internal::{{struct.name}}_Data* data_; | |
106 mojo::internal::SerializationContext* context_; | |
107 }; | |
OLD | NEW |