| Index: mojo/public/tools/bindings/generators/go_templates/source.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/go_templates/source.tmpl b/mojo/public/tools/bindings/generators/go_templates/source.tmpl
|
| index df51bf0c79e6f724baf0741b55faf21cf561a0a8..7d79831bd8c20d6e6c8e66e074a8a91b00e7ca49 100644
|
| --- a/mojo/public/tools/bindings/generators/go_templates/source.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/go_templates/source.tmpl
|
| @@ -20,61 +20,34 @@ import (
|
| {% import "interface.tmpl" as interface_macros %}
|
| {% import "struct.tmpl" as struct_macros %}
|
| {% import "union.tmpl" as union_macros %}
|
| -{% import "mojom_reference_macros.tmpl" as mojom_reference_macros %}
|
| -
|
| -{#- This init function initializes a mapping between identifiers and their
|
| - corresponding user-defined type. This could have been a MojomDescriptor,
|
| - but since it allows Types to be unresolved, it is more complex than is
|
| - necessary. It's simpler to resolve everything in codegen.
|
| - It is also difficult to insert changes to the description during the
|
| - process of generating each type, so this mapping is computed in Python.
|
| - Note: While we may register items into the map multiple times, this is okay
|
| - because the keys will match.
|
| --#}
|
|
|
| {%- if should_gen_mojom_types -%}
|
| -// These IDs are the Mojom Identifiers / Type Keys.
|
| -// Mojom libraries importing this one will use these identifiers when building
|
| -// TypeReference objects.
|
| -{% for enum in enums %}
|
| -var ID_{{enum|mojom_type_identifier}} string = "{{enum|mojom_type_identifier}}"
|
| -{% endfor %}
|
| -{% for struct in structs %}
|
| -var ID_{{struct|mojom_type_identifier}} string = "{{struct|mojom_type_identifier}}"
|
| -{% endfor %}
|
| -{% for union in unions %}
|
| -var ID_{{union|mojom_type_identifier}} string = "{{union|mojom_type_identifier}}"
|
| -{% endfor %}
|
| -{% for interface in interfaces %}
|
| -var ID_{{interface|mojom_type_identifier}} string = "{{interface|mojom_type_identifier}}"
|
| -{% endfor %}
|
| +// This global variable contains a mojom_types.RuntimeTypeInfo struct
|
| +// describing the types defined in this file and all of its imports as
|
| +// well as the top-level interfaces defined in this file.
|
| +var runtimeTypeInfo__ = {{typepkg}}RuntimeTypeInfo{}
|
|
|
| -{% set mapping = package|qualified(None, false) ~ 'Desc__' %}
|
| -var {{mapping}} = make(map[string]{{typepkg}}UserDefinedType)
|
| func init() {
|
| - {% for enum in enums %}
|
| - {{mojom_reference_macros.registerType(mapping, typepkg, package, enum)}}
|
| - {%- endfor %}
|
| - {% for struct in structs %}
|
| - {{mojom_reference_macros.registerType(mapping, typepkg, package, struct)}}
|
| - {%- endfor %}
|
| - {% for union in unions %}
|
| - {{mojom_reference_macros.registerType(mapping, typepkg, package, union)}}
|
| - {%- endfor %}
|
| - {% for interface in interfaces %}
|
| - {{mojom_reference_macros.registerType(mapping, typepkg, package, interface)}}
|
| - {%- endfor %}
|
| + // serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
|
| + // a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this file.
|
| + serializedRuntimeTypeInfo := []uint8{{serialized_runtime_type_info_literal}}
|
| +
|
| + // Deserialize RuntimeTypeInfo
|
| + decoder := bindings.NewDecoder(serializedRuntimeTypeInfo, nil)
|
| + runtimeTypeInfo__.Decode(decoder)
|
|
|
| {% for mi in mojom_imports.values() %}
|
| {%- if mi ~ '.' != typepkg and mi ~ '.' != descpkg %}
|
| for s, udt := range {{mi}}.GetAllMojomTypeDefinitions() {
|
| - {{mapping}}[s] = udt
|
| + runtimeTypeInfo__.TypeMap[s] = udt
|
| }
|
| +
|
| +
|
| {% endif -%}
|
| {% endfor %}
|
| }
|
| func GetAllMojomTypeDefinitions() map[string]{{typepkg}}UserDefinedType {
|
| - return {{mapping}}
|
| + return runtimeTypeInfo__.TypeMap
|
| }
|
| {% endif %}
|
|
|
|
|