OLD | NEW |
1 {%- macro set_default(module, kind, value, depth) -%} | |
2 {#--- Strings ---#} | |
3 {%- if kind|is_string_kind -%} | |
4 {{caller(value|expression_to_text)}} | |
5 {#--- Arrays ---#} | |
6 {%- elif kind|is_array_kind %} | |
7 {%- set _ = value|verify_token_type("ARRAY") %} | |
8 { | |
9 var tmp{{depth}} = []; | |
10 {%- for element in value[1] %} | |
11 {%- filter indent(2) %} | |
12 {%- call(result) set_default(module, kind.kind, element, depth+1) %} | |
13 tmp{{depth}}[{{loop.index0}}] = {{result}}; | |
14 {%- endcall %} | |
15 {%- endfilter %} | |
16 {%- endfor -%} | |
17 {{caller("tmp" ~ depth)|indent(2)}} | |
18 } | |
19 {#--- Objects ---#} | |
20 {%- elif kind|is_object_kind %} | |
21 {%- set _ = value|verify_token_type("OBJECT") %} | |
22 { | |
23 var tmp{{depth}} = new {{kind|js_type}}(); | |
24 {%- set struct = kinds[kind.spec] %} | |
25 {%- for element in value[1] %} | |
26 {#- Use struct.packed_fields to order struct values by ordinal number #} | |
27 {%- set subfield = struct.fields[loop.index0] %} | |
28 {%- filter indent(2) %} | |
29 {%- call(result) set_default(module, subfield.kind, element, depth+1) %} | |
30 tmp{{depth}}.{{subfield.name}} = {{result}}; | |
31 {%- endcall %} | |
32 {%- endfilter %} | |
33 {%- endfor -%} | |
34 {{caller("tmp" ~ depth)|indent(2)}} | |
35 } | |
36 {#--- POD types ---#} | |
37 {%- else -%} | |
38 {{caller(value|expression_to_text)}} | |
39 {%- endif %} | |
40 {%- endmacro %} | |
41 | |
42 {#--- Begin #} | 1 {#--- Begin #} |
43 function {{struct.name}}() { | 2 function {{struct.name}}() { |
44 this.initDefaults_(); | 3 this.initDefaults_(); |
45 } | 4 } |
46 | 5 |
47 {#--- Enums #} | 6 {#--- Enums #} |
48 {%- from "enum_definition.tmpl" import enum_def %} | 7 {%- from "enum_definition.tmpl" import enum_def %} |
49 {% for enum in struct.enums %} | 8 {% for enum in struct.enums %} |
50 {{enum_def("%s.%s"|format(struct.name, enum.name), enum, module)}} | 9 {{enum_def("%s.%s"|format(struct.name, enum.name), enum, module)}} |
51 {% endfor %} | 10 {% endfor %} |
52 | 11 |
53 {#--- Constants #} | 12 {#--- Constants #} |
54 {% for constant in struct.constants %} | 13 {% for constant in struct.constants %} |
55 {{struct.name}}.{{constant.name}} = {{constant.value|expression_to_text}}; | 14 {{struct.name}}.{{constant.name}} = {{constant.value|expression_to_text}}; |
56 {% endfor %} | 15 {% endfor %} |
57 | 16 |
58 {#--- Set up defaults #} | 17 {#--- Set up defaults #} |
59 {{struct.name}}.prototype.initDefaults_ = function() { | 18 {{struct.name}}.prototype.initDefaults_ = function() { |
60 {%- for packed_field in struct.packed.packed_fields %} | 19 {%- for packed_field in struct.packed.packed_fields %} |
61 {%- if packed_field.field.default %} | |
62 {%- filter indent(4) %} | |
63 {%- call(result) set_default(module, packed_field.field.kind, packed_field.f
ield.default, 0) %} | |
64 this.{{packed_field.field.name}} = {{result}}; | |
65 {%- endcall %} | |
66 {%- endfilter %} | |
67 {%- else %} | |
68 this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; | 20 this.{{packed_field.field.name}} = {{packed_field.field|default_value}}; |
69 {%- endif %} | |
70 {%- endfor %} | 21 {%- endfor %} |
71 }; | 22 }; |
72 | 23 |
73 {#--- Encoding and decoding #} | 24 {#--- Encoding and decoding #} |
74 | 25 |
75 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa
d_size}}; | 26 {{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payloa
d_size}}; |
76 | 27 |
77 {{struct.name}}.decode = function(decoder) { | 28 {{struct.name}}.decode = function(decoder) { |
78 var packed; | 29 var packed; |
79 var val = new {{struct.name}}(); | 30 var val = new {{struct.name}}(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 {%- else %} | 63 {%- else %} |
113 {%- for packed_field in byte.packed_fields %} | 64 {%- for packed_field in byte.packed_fields %} |
114 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n
ame}}); | 65 encoder.{{packed_field.field.kind|encode_snippet}}val.{{packed_field.field.n
ame}}); |
115 {%- endfor %} | 66 {%- endfor %} |
116 {%- endif %} | 67 {%- endif %} |
117 {%- if byte.is_padding %} | 68 {%- if byte.is_padding %} |
118 encoder.skip(1); | 69 encoder.skip(1); |
119 {%- endif %} | 70 {%- endif %} |
120 {%- endfor %} | 71 {%- endfor %} |
121 }; | 72 }; |
OLD | NEW |