| 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 |