1
2class {{struct.name}} {
3 public:
4  typedef internal::{{struct.name}}_Data Data_;
5
6{#--- Constants #}
7{%- for constant in struct.constants %}
8  static const {{constant.kind|cpp_pod_type}} {{constant.name}};
9{%- endfor %}
10{#--- Enums #}
11{%- for enum in struct.enums -%}
12{%    macro enum_def() %}{% include "enum_declaration.tmpl" %}{% endmacro %}
13  {{enum_def()|indent(2)}}
14{%- endfor %}
15  static {{struct.name}}Ptr New();
16
17  template <typename U>
18  static {{struct.name}}Ptr From(const U& u) {
19    return mojo::TypeConverter<{{struct.name}}Ptr, U>::Convert(u);
20  }
21
22  {{struct.name}}();
23  ~{{struct.name}}();
24
25{#--- Getters #}
26{%  for field in struct.fields %}
27{%-   set type = field.kind|cpp_wrapper_type %}
28{%-   set name = field.name %}
29  {{type}} {{name}};
30{%- endfor %}
31};
32