OLD | NEW |
---|---|
1 {%- set class_name = struct.name -%} | 1 {%- set class_name = struct.name -%} |
2 {%- set dtor_name = [] %} | 2 {%- set dtor_name = [] %} |
3 {%- if struct|is_struct_with_handles %} | 3 {%- if struct|is_struct_with_handles %} |
4 {%- set _ = dtor_name.append("&internal::%s_Data_Destructor"|format(struct.nam e)) %} | 4 {%- set _ = dtor_name.append("&internal::%s_Data_Destructor"|format(struct.nam e)) %} |
5 {%- else %} | 5 {%- else %} |
6 {%- set _ = dtor_name.append("NULL") %} | 6 {%- set _ = dtor_name.append("NULL") %} |
7 {%- endif %} | 7 {%- endif %} |
8 | 8 |
9 {%- macro set_default(field) -%} | |
10 {%- if field.kind|is_string_kind -%} | |
11 set_{{field.name}}(mojo::String({{field.default}})); | |
12 {%- elif field.kind|is_object_kind -%} | |
13 { | |
14 {{field.kind|cpp_wrapper_type}}::Builder tmp; | |
15 // TODO | |
16 set_{{field.name}}(tmp.Finish()); | |
17 } | |
18 {%- else -%} | |
19 set_{{field.name}}({{field.default}}); | |
20 {%- endif %} | |
21 {%- endmacro %} | |
22 | |
9 {{class_name}}::Builder::Builder(mojo::Buffer* buf) | 23 {{class_name}}::Builder::Builder(mojo::Buffer* buf) |
10 : data_(Data::New(buf, {{dtor_name[0]}})) { | 24 : data_(Data::New(buf, {{dtor_name[0]}})) { |
25 {%- for pf in struct.packed.packed_fields if pf.field.default %} | |
26 {{set_default(pf.field)|indent(2)}} | |
darin (slow to review)
2014/01/21 23:47:20
Perhaps we should defer setting default values unt
| |
27 {%- endfor %} | |
11 } | 28 } |
12 | 29 |
13 {{class_name}} {{class_name}}::Builder::Finish() { | 30 {{class_name}} {{class_name}}::Builder::Finish() { |
14 Data* data = NULL; | 31 Data* data = NULL; |
15 std::swap(data, data_); | 32 std::swap(data, data_); |
16 return mojo::internal::Wrap(data); | 33 return mojo::internal::Wrap(data); |
17 } | 34 } |
OLD | NEW |