OLD | NEW |
---|---|
1 {%- from "enum_macros.tmpl" import is_valid_enum_def %} | 1 {%- from "enum_macros.tmpl" import is_valid_enum_def %} |
2 | 2 |
3 {#--- Enums #} | 3 {#--- Enums #} |
4 {%- for enum in struct.enums -%} | 4 {%- for enum in struct.enums -%} |
5 {{is_valid_enum_def(enum, class_name=struct.name)}} | 5 {{is_valid_enum_def(enum, class_name=struct.name)}} |
6 {%- endfor %} | 6 {%- endfor %} |
7 | 7 |
8 // static | 8 // static |
9 {{struct.name}}Ptr {{struct.name}}::New() { | 9 {{struct.name}}Ptr {{struct.name}}::New() { |
10 {{struct.name}}Ptr rv; | 10 {{struct.name}}Ptr rv; |
11 mojo::internal::StructHelper<{{struct.name}}>::Initialize(&rv); | 11 mojo::internal::StructHelper<{{struct.name}}>::Initialize(&rv); |
12 return rv.Pass(); | 12 return rv.Pass(); |
13 } | 13 } |
14 | 14 |
15 {{struct.name}}::{{struct.name}}() | 15 {{struct.name}}::{{struct.name}}() |
16 {%- for field in struct.fields %} | 16 {%- for field in struct.fields %} |
17 {% if loop.first %}:{% else %} {% endif %} {{field.name}}({{field|default_va lue}}){% if not loop.last %},{% endif %} | 17 {% if loop.first %}:{% else %} {% endif %} {{field.name}}({{field|default_va lue}}){% if not loop.last %},{% endif %} |
18 {%- endfor %} { | 18 {%- endfor %} { |
19 } | 19 } |
20 | 20 |
21 {{struct.name}}::~{{struct.name}}() { | 21 {{struct.name}}::~{{struct.name}}() { |
22 } | 22 } |
23 | 23 |
24 {% if struct|is_cloneable_kind %} | 24 {% if struct|is_cloneable_kind %} |
25 {{struct.name}}Ptr {{struct.name}}::Clone() const { | 25 {{struct.name}}Ptr {{struct.name}}::Clone() const { |
26 {{struct.name}}Ptr rv(New()); | 26 {{struct.name}}Ptr rv(New()); |
27 {%- for field in struct.fields %} | 27 {%- for field in struct.fields %} |
28 {%- if field.kind|is_object_kind and not field.kind|is_string_kind %} | 28 {%- if field.kind|is_typemapped_kind %} |
29 NOTREACHED() << "Object cloning not supported with typemapped fields."; | |
yzshen1
2015/12/15 21:20:27
It seems reasonable to add support if the typemapp
Ken Rockot(use gerrit already)
2015/12/15 23:31:08
I agree we might want to, but I'd rather wait unti
| |
30 {%- elif field.kind|is_object_kind and not field.kind|is_string_kind %} | |
29 rv->{{field.name}} = {{field.name}}.Clone(); | 31 rv->{{field.name}} = {{field.name}}.Clone(); |
30 {%- else %} | 32 {%- else %} |
31 rv->{{field.name}} = {{field.name}}; | 33 rv->{{field.name}} = {{field.name}}; |
32 {%- endif %} | 34 {%- endif %} |
33 {%- endfor %} | 35 {%- endfor %} |
34 return rv.Pass(); | 36 return rv.Pass(); |
35 } | 37 } |
36 {% endif %} | 38 {% endif %} |
37 | 39 |
38 bool {{struct.name}}::Equals(const {{struct.name}}& other) const { | 40 bool {{struct.name}}::Equals(const {{struct.name}}& other) const { |
39 {%- for field in struct.fields %} | 41 {%- for field in struct.fields %} |
42 {%- if field.kind|is_typemapped_kind %} | |
43 NOTREACHED() << "Equality testing not supported with typemapped fields."; | |
yzshen1
2015/12/15 21:20:27
Similarly, seems reasonable to add support if the
Ken Rockot(use gerrit already)
2015/12/15 23:31:08
Agreed
| |
44 {%- else %} | |
40 if (!mojo::internal::ValueTraits<{{field.kind|cpp_wrapper_type}}>::Equals(this ->{{field.name}}, other.{{field.name}})) | 45 if (!mojo::internal::ValueTraits<{{field.kind|cpp_wrapper_type}}>::Equals(this ->{{field.name}}, other.{{field.name}})) |
41 return false; | 46 return false; |
47 {%- endif %} | |
42 {%- endfor %} | 48 {%- endfor %} |
43 return true; | 49 return true; |
44 } | 50 } |
OLD | NEW |