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(kind, value, depth) -%} | 9 {%- macro set_default(kind, value, depth) -%} |
10 {#--- Strings ---#} | 10 {#--- Strings ---#} |
11 {%- if kind|is_string_kind -%} | 11 {%- if kind|is_string_kind -%} |
12 {{caller("mojo::String(" ~ value ~ ")")}} | 12 {{caller("mojo::String(" ~ value|expression_to_text(module) ~ ")")}} |
13 {#--- Arrays ---#} | 13 {#--- Arrays ---#} |
14 {%- elif kind|is_array_kind %} | 14 {%- elif kind|is_array_kind %} |
15 {%- set _ = value|verify_token_type("ARRAY") %} | 15 {%- set _ = value|verify_token_type("ARRAY") %} |
16 { | 16 { |
17 {{kind|cpp_wrapper_type}}::Builder tmp{{depth}}({{value[1]|length}}); | 17 {{kind|cpp_wrapper_type}}::Builder tmp{{depth}}({{value[1]|length}}); |
18 {%- for element in value[1] %} | 18 {%- for element in value[1] %} |
19 {%- filter indent(2) %} | 19 {%- filter indent(2) %} |
20 {%- call(result) set_default(kind.kind, element, depth+1) %} | 20 {%- call(result) set_default(kind.kind, element, depth+1) %} |
21 tmp{{depth}}[{{loop.index0}}] = {{result}}; | 21 tmp{{depth}}[{{loop.index0}}] = {{result}}; |
22 {%- endcall %} | 22 {%- endcall %} |
(...skipping 13 matching lines...) Expand all Loading... |
36 {%- filter indent(2) %} | 36 {%- filter indent(2) %} |
37 {%- call(result) set_default(subfield.kind, element, depth+1) %} | 37 {%- call(result) set_default(subfield.kind, element, depth+1) %} |
38 tmp{{depth}}.set_{{subfield.name}}({{result}}); | 38 tmp{{depth}}.set_{{subfield.name}}({{result}}); |
39 {%- endcall %} | 39 {%- endcall %} |
40 {%- endfilter %} | 40 {%- endfilter %} |
41 {%- endfor -%} | 41 {%- endfor -%} |
42 {{caller("tmp" ~ depth ~ ".Finish()")|indent(2)}} | 42 {{caller("tmp" ~ depth ~ ".Finish()")|indent(2)}} |
43 } | 43 } |
44 {#--- POD types ---#} | 44 {#--- POD types ---#} |
45 {%- else -%} | 45 {%- else -%} |
46 {{caller(value|substitute_namespace(imports))}} | 46 {{caller(value|expression_to_text(module))}} |
47 {%- endif %} | 47 {%- endif %} |
48 {%- endmacro %} | 48 {%- endmacro %} |
49 | 49 |
50 {{class_name}}::Builder::Builder(mojo::Buffer* buf) | 50 {{class_name}}::Builder::Builder(mojo::Buffer* buf) |
51 : data_(Data::New(buf, {{dtor_name[0]}})) { | 51 : data_(Data::New(buf, {{dtor_name[0]}})) { |
52 {%- for pf in struct.packed.packed_fields if pf.field.default %} | 52 {%- for pf in struct.packed.packed_fields if pf.field.default %} |
53 {%- filter indent(2) %} | 53 {%- filter indent(2) %} |
54 {%- call(result) set_default(pf.field.kind, pf.field.default, 0) %} | 54 {%- call(result) set_default(pf.field.kind, pf.field.default, 0) %} |
55 set_{{pf.field.name}}({{result}}); | 55 set_{{pf.field.name}}({{result}}); |
56 {%- endcall %} | 56 {%- endcall %} |
57 {%- endfilter %} | 57 {%- endfilter %} |
58 {%- endfor %} | 58 {%- endfor %} |
59 } | 59 } |
60 | 60 |
61 {{class_name}} {{class_name}}::Builder::Finish() { | 61 {{class_name}} {{class_name}}::Builder::Finish() { |
62 Data* data = NULL; | 62 Data* data = NULL; |
63 std::swap(data, data_); | 63 std::swap(data, data_); |
64 return mojo::internal::Wrap(data); | 64 return mojo::internal::Wrap(data); |
65 } | 65 } |
OLD | NEW |