| //* Copyright 2020 The Dawn Authors | |
| //* | |
| //* Licensed under the Apache License, Version 2.0 (the "License"); | |
| //* you may not use this file except in compliance with the License. | |
| //* You may obtain a copy of the License at | |
| //* | |
| //* http://www.apache.org/licenses/LICENSE-2.0 | |
| //* | |
| //* Unless required by applicable law or agreed to in writing, software | |
| //* distributed under the License is distributed on an "AS IS" BASIS, | |
| //* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| //* See the License for the specific language governing permissions and | |
| //* limitations under the License. | |
| //* | |
| //* | |
| //* This generator is used to produce part of Emscripten's struct_info.json, | |
| //* which is a list of struct fields that it uses to generate field offset | |
| //* information for its own code generators. | |
| //* https://github.com/emscripten-core/emscripten/blob/master/src/struct_info.json | |
| //* | |
| { | |
| {% set api = metadata.api.lower() %} | |
| "file": "{api}/{api}.h", | |
| "defines": [], | |
| "structs": { | |
| "{{metadata.c_prefix}}ChainedStruct": [ | |
| "next", | |
| "sType" | |
| ], | |
| {% for type in by_category["structure"] %} | |
| "{{as_cType(type.name)}}": [ | |
| {% if type.chained %} | |
| "chain" | |
| {%- elif type.extensible %} | |
| "nextInChain" | |
| {%- endif %} | |
| {% for member in type.members -%} | |
| {%- if (type.chained or type.extensible) or not loop.first -%} | |
| , | |
| {% endif %} | |
| "{{as_varName(member.name)}}" | |
| {%- endfor %} | |
| ] | |
| {%- if not loop.last -%} | |
| , | |
| {% endif %} | |
| {% endfor %} | |
| } | |
| } |