Index: mojo/public/tools/bindings/generators/go_templates/mojom_reference_macros.tmpl |
diff --git a/mojo/public/tools/bindings/generators/go_templates/mojom_reference_macros.tmpl b/mojo/public/tools/bindings/generators/go_templates/mojom_reference_macros.tmpl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dadc6e52e3e3480c5ed9a147f01168466f82da4c |
--- /dev/null |
+++ b/mojo/public/tools/bindings/generators/go_templates/mojom_reference_macros.tmpl |
@@ -0,0 +1,53 @@ |
+// 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. |
+ |
+{% import "mojom_util_macros.tmpl" as util %} |
+ |
+{%- macro registerType(mapping, typepkg, pkg, t) -%} |
azani
2015/10/12 21:13:07
t is type?
alexfandrianto
2015/10/16 21:25:49
Yes, it is a type (or kind).
azani
2015/10/19 18:27:02
Can you rename it to type or kind then?
alexfandrianto
2015/10/19 21:36:30
Done. I chose type
|
+{%- if t|identifier(pkg)|identifier_check('RegisterType') -%}{# Already printed out #} |
+{%- elif t|package != '' -%} {# Don't print. That package will do it. #} |
+{%- else -%} |
+{{t|identifier(pkg)|identifier_store('RegisterType')}} |
+ |
+{%- if t|mojom_type(typepkg) != "" -%}{#- simple kind case: do nothing -#} |
+{%- elif t|is_array -%} |
+{{registerType(mapping, typepkg, pkg, t.kind)}} |
+{%- elif t|is_map -%} |
+{{registerType(mapping, typepkg, pkg, t.key_kind)}} |
+{{registerType(mapping, typepkg, pkg, t.value_kind)}} |
+{% elif t|is_enum %} |
+ {{mapping}}["{{util.typeName(t, typepkg, pkg)}}"] = &{{typepkg}}UserDefinedTypeEnumType{ |
+ Value: {{util.typeName(t, typepkg, pkg)}}(), |
+ } |
+{% elif t|is_struct %} |
+ {{mapping}}["{{util.typeName(t, typepkg, pkg)}}"] = &{{typepkg}}UserDefinedTypeStructType{ |
+ Value: {{util.typeName(t, typepkg, pkg)}}(), |
+ } |
+ {% for field in t.fields %} |
+{{registerType(mapping, typepkg, pkg, field.kind)}} |
+ {% endfor %} |
+{% elif t|is_union %} |
+ {{mapping}}["{{util.typeName(t, typepkg, pkg)}}"] = &{{typepkg}}UserDefinedTypeUnionType{ |
+ Value: {{util.typeName(t, typepkg, pkg)}}(), |
+ } |
+ {% for field in t.fields %} |
+{{registerType(mapping, typepkg, pkg, field.kind)}} |
+ {% endfor %} |
+{% elif t|is_interface %} |
+ {{mapping}}["{{util.typeName(t, typepkg, pkg)}}"] = &{{typepkg}}UserDefinedTypeInterfaceType{ |
+ Value: {{util.typeName(t, typepkg, pkg)}}(), |
+ } |
+ {% for method in t.methods %} |
+{{registerType(mapping, typepkg, pkg, method.param_struct)}} |
+ {% if method.response_parameters -%} |
+{{registerType(mapping, typepkg, pkg, method.response_param_struct)}} |
+ {%- endif %} |
+ {%- endfor %} |
+{% elif t|is_interface_request -%} {# No need to register anything #} |
+{%- else -%} |
+ ERROR: UNSUPPORTED TYPE |
+ {{t|identifier(pkg)}} |
+{%- endif -%} |
+{%- endif -%} |
+{%- endmacro -%} |