Index: mojo/public/tools/bindings/generators/dart_templates/mojom_reference_macros.tmpl |
diff --git a/mojo/public/tools/bindings/generators/dart_templates/mojom_reference_macros.tmpl b/mojo/public/tools/bindings/generators/dart_templates/mojom_reference_macros.tmpl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..177a896bf4caebb9d9aa076389846656ed94a418 |
--- /dev/null |
+++ b/mojo/public/tools/bindings/generators/dart_templates/mojom_reference_macros.tmpl |
@@ -0,0 +1,31 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+{%- macro registerType(mapping, typepkg, pkg, type) -%} |
+{%- if type|is_enum_kind -%} |
+ {{mapping}}["{{type|mojom_type_identifier}}"] = |
+ new {{typepkg}}UserDefinedType() |
+ ..enumType = _{{type|mojom_type_identifier|lower_camel}}(); |
+{%- elif type|is_struct_kind -%} |
+ {{mapping}}["{{type|mojom_type_identifier}}"] = |
+ new {{typepkg}}UserDefinedType() |
+ ..structType = _{{type|mojom_type_identifier|lower_camel}}(); |
+ {%- for enum in type.enums %} |
+ {{ registerType(mapping, typepkg, pkg, enum) }} |
+ {%- endfor %} |
+{%- elif type|is_union_kind -%} |
+ {{mapping}}["{{type|mojom_type_identifier}}"] = |
+ new {{typepkg}}UserDefinedType() |
+ ..unionType = _{{type|mojom_type_identifier|lower_camel}}(); |
+{%- elif type|is_interface_kind -%} |
+ {{mapping}}["{{type|mojom_type_identifier}}"] = |
+ new {{typepkg}}UserDefinedType() |
+ ..interfaceType = _{{type|mojom_type_identifier|lower_camel}}(); |
+ {%- for enum in type.enums %} |
+ {{ registerType(mapping, typepkg, pkg, enum) }} |
+ {%- endfor %} |
+{%- else -%} |
+ {# Simple kinds, arrays, maps, and handles do not need to be registered. #} |
+{%- endif -%} |
+{%- endmacro -%} |