Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: mojo/public/tools/bindings/generators/dart_templates/union_definition.tmpl

Issue 1433183002: Generate Mojom Types for Dart (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Simplify identifier_store for Go and Dart Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 {#--- Begin #} 1 {#--- Begin #}
2 2
3 {%- import "encoding_macros.tmpl" as encoding_macros %} 3 {%- import "encoding_macros.tmpl" as encoding_macros %}
4 {% import "mojom_type_macros.tmpl" as mojom_type_macros %}
4 5
5 {%- macro enum_def(union) %} 6 {%- macro enum_def(union, typepkg, package) %}
6 enum {{union|name}}Tag { 7 enum {{union|name}}Tag {
7 {%- for field in union.fields %} 8 {%- for field in union.fields %}
8 {{field|tag_name}}, 9 {{field|tag_name}},
9 {%- endfor %} 10 {%- endfor %}
10 unknown 11 unknown
11 } 12 }
12 {%- endmacro %} 13 {%- endmacro %}
13 14
14 {%- macro wrapper_def(union) %} 15 {%- macro wrapper_def(union) %}
15 class {{union|name}} extends bindings.Union { 16 class {{union|name}} extends bindings.Union {
(...skipping 28 matching lines...) Expand all
44 } 45 }
45 {%- endfor %} 46 {%- endfor %}
46 47
47 static {{union|name}} decode(bindings.Decoder decoder0, int offset) { 48 static {{union|name}} decode(bindings.Decoder decoder0, int offset) {
48 int size = decoder0.decodeUint32(offset); 49 int size = decoder0.decodeUint32(offset);
49 if (size == 0) { 50 if (size == 0) {
50 return null; 51 return null;
51 } 52 }
52 {{union|name}} result = new {{union|name}}(); 53 {{union|name}} result = new {{union|name}}();
53 54
54 // TODO(azani): Handle unknown union member. 55 // TODO(azani): Handle unknown union member. An assert breaks validation_uni ttest.
55 {{union|name}}Tag tag = _int_to_tag[decoder0.decodeUint32(offset + 4)]; 56 {{union|name}}Tag tag = _int_to_tag[decoder0.decodeUint32(offset + 4)];
56 switch (tag) { 57 switch (tag) {
57 {%- for field in union.fields %} 58 {%- for field in union.fields %}
58 case {{union|name}}Tag.{{field|tag_name}}: 59 case {{union|name}}Tag.{{field|tag_name}}:
59 {%- if field.kind|is_union_kind %} 60 {%- if field.kind|is_union_kind %}
60 var decoder1 = decoder0.decodePointer(offset + 8, {{field.kind|is_nullab le_kind|dart_true_false}}); 61 var decoder1 = decoder0.decodePointer(offset + 8, {{field.kind|is_nullab le_kind|dart_true_false}});
61 result.{{field|name}} = {{field.kind|dart_type}}.decode(decoder1, 0); 62 result.{{field|name}} = {{field.kind|dart_type}}.decode(decoder1, 0);
62 {%- else %} 63 {%- else %}
63 {{encoding_macros.decode('result.' ~ field|name, field.kind, "offset + 8 ", 0)|indent(8)}} 64 {{encoding_macros.decode('result.' ~ field|name, field.kind, "offset + 8 ", 0)|indent(8)}}
64 {%- endif %} 65 {%- endif %}
65 break; 66 break;
66 {%- endfor %} 67 {%- endfor %}
68 default:
zra 2015/11/24 17:34:44 If this is an error or unreachable, that should be
alexfandrianto 2015/12/18 01:53:19 Someone else fixed this.
69 break;
67 } 70 }
68 71
69 return result; 72 return result;
70 } 73 }
71 74
72 void encode(bindings.Encoder encoder0, int offset) { 75 void encode(bindings.Encoder encoder0, int offset) {
73 // TODO(azani): Error when trying to encode an unknown member. 76 // TODO(azani): Error when trying to encode an unknown member.
74 encoder0.encodeUint32(16, offset); 77 encoder0.encodeUint32(16, offset);
75 encoder0.encodeUint32(_tag_to_int[_tag], offset + 4); 78 encoder0.encodeUint32(_tag_to_int[_tag], offset + 4);
76 switch (_tag) { 79 switch (_tag) {
77 {%- for field in union.fields %} 80 {%- for field in union.fields %}
78 case {{union|name}}Tag.{{field|tag_name}}: 81 case {{union|name}}Tag.{{field|tag_name}}:
79 {%- if field.kind|is_union_kind %} 82 {%- if field.kind|is_union_kind %}
80 encoder0.encodeNestedUnion({{field|name}}, offset + 8, {{field.kind|is_n ullable_kind|dart_true_false}}); 83 encoder0.encodeNestedUnion({{field|name}}, offset + 8, {{field.kind|is_n ullable_kind|dart_true_false}});
81 {%- else %} 84 {%- else %}
82 {{encoding_macros.encode(field|name, field.kind, "offset + 8", 0)|indent (8)}} 85 {{encoding_macros.encode(field|name, field.kind, "offset + 8", 0)|indent (8)}}
83 {%- endif %} 86 {%- endif %}
84 break; 87 break;
85 {%- endfor %} 88 {%- endfor %}
89 default:
zra 2015/11/24 17:34:44 ditto.
alexfandrianto 2015/12/18 01:53:19 Done.
90 break;
86 } 91 }
87 } 92 }
88 93
89 String toString() { 94 String toString() {
90 String result = "{{union|name}}("; 95 String result = "{{union|name}}(";
91 switch (_tag) { 96 switch (_tag) {
92 {%- for field in union.fields %} 97 {%- for field in union.fields %}
93 case {{union|name}}Tag.{{field|tag_name}}: 98 case {{union|name}}Tag.{{field|tag_name}}:
94 result += "{{field|name}}"; 99 result += "{{field|name}}";
95 break; 100 break;
96 {%- endfor %} 101 {%- endfor %}
97 default: 102 default:
98 result += "unknown"; 103 result += "unknown";
99 } 104 }
100 result += ": $_data)"; 105 result += ": $_data)";
101 return result; 106 return result;
102 } 107 }
103 } 108 }
104 {%- endmacro %} 109 {%- endmacro %}
105 110
106 111
107 {%- macro union_def(union) %} 112 {%- macro union_def(union, typepkg, package) %}
108 {{enum_def(union)}} 113 {{enum_def(union)}}
109 {{wrapper_def(union)}} 114 {{wrapper_def(union)}}
115
116 {{ mojom_type_macros.writeMojomTypeDef(union, typepkg, package) }}
110 {%- endmacro %} 117 {%- endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698