Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_go_generator.py

Issue 1483313002: go generator: generate full identifiers (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/tools/bindings/generators/go_templates/mojom_type_macros.tmpl ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 '''Generates Go source files from a mojom.Module.''' 5 '''Generates Go source files from a mojom.Module.'''
6 6
7 from itertools import chain 7 from itertools import chain
8 import os 8 import os
9 import re 9 import re
10 10
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 return UpperCamelCase(name) 135 return UpperCamelCase(name)
136 # Leave '_' symbols for unexported names. 136 # Leave '_' symbols for unexported names.
137 return name[0].lower() + name[1:] 137 return name[0].lower() + name[1:]
138 138
139 # Returns full name of an imported element based on prebuilt dict |_imports|. 139 # Returns full name of an imported element based on prebuilt dict |_imports|.
140 # If the |element| is not imported returns formatted name of it. 140 # If the |element| is not imported returns formatted name of it.
141 # |element| should have attr 'name'. |exported| argument is used to make 141 # |element| should have attr 'name'. |exported| argument is used to make
142 # |FormatName()| calls only. 142 # |FormatName()| calls only.
143 def GetFullName(element, exported=True): 143 def GetFullName(element, exported=True):
144 return GetQualifiedName( 144 return GetQualifiedName(
145 element.name, GetPackageNameForElement(element), exported) 145 element.name, GetPackageNameForElement(element), exported)
146
147 # Returns a string of the form package.path.TypeName - the full identifier
148 # for an element.
149 def GetFullIdentifier(element, exported=True):
150 return '%s.%s' % (element.module.namespace, GetNameForElement(element))
146 151
147 def GetUnqualifiedNameForElement(element, exported=True): 152 def GetUnqualifiedNameForElement(element, exported=True):
148 return FormatName(element.name, exported) 153 return FormatName(element.name, exported)
149 154
150 # Returns a name for nested elements like enum field or constant. 155 # Returns a name for nested elements like enum field or constant.
151 # The returned name consists of camel-cased parts separated by '_'. 156 # The returned name consists of camel-cased parts separated by '_'.
152 def GetNameForNestedElement(element): 157 def GetNameForNestedElement(element):
153 if element.parent_kind: 158 if element.parent_kind:
154 return "%s_%s" % (GetNameForElement(element.parent_kind), 159 return "%s_%s" % (GetNameForElement(element.parent_kind),
155 FormatName(element.name)) 160 FormatName(element.name))
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 'is_interface': mojom.IsInterfaceKind, 355 'is_interface': mojom.IsInterfaceKind,
351 'is_interface_request': mojom.IsInterfaceRequestKind, 356 'is_interface_request': mojom.IsInterfaceRequestKind,
352 'is_map': mojom.IsMapKind, 357 'is_map': mojom.IsMapKind,
353 'is_none_or_empty': lambda array: array is None or len(array) == 0, 358 'is_none_or_empty': lambda array: array is None or len(array) == 0,
354 'is_nullable': mojom.IsNullableKind, 359 'is_nullable': mojom.IsNullableKind,
355 'is_pointer': IsPointer, 360 'is_pointer': IsPointer,
356 'is_object': mojom.IsObjectKind, 361 'is_object': mojom.IsObjectKind,
357 'is_struct': mojom.IsStructKind, 362 'is_struct': mojom.IsStructKind,
358 'is_union': mojom.IsUnionKind, 363 'is_union': mojom.IsUnionKind,
359 'qualified': GetQualifiedName, 364 'qualified': GetQualifiedName,
365 'fullidentifier': GetFullIdentifier,
360 'mojom_type': GetMojomTypeValue, 366 'mojom_type': GetMojomTypeValue,
361 'mojom_type_identifier': GetMojomTypeIdentifier, 367 'mojom_type_identifier': GetMojomTypeIdentifier,
362 'name': GetNameForElement, 368 'name': GetNameForElement,
363 'unqualified_name': GetUnqualifiedNameForElement, 369 'unqualified_name': GetUnqualifiedNameForElement,
364 'package': GetPackageNameForElement, 370 'package': GetPackageNameForElement,
365 'tab_indent': lambda s, size = 1: ('\n' + '\t' * size).join(s.splitlines()) 371 'tab_indent': lambda s, size = 1: ('\n' + '\t' * size).join(s.splitlines())
366 } 372 }
367 373
368 # TODO: This value should be settable via arguments. If False, then mojom type 374 # TODO: This value should be settable via arguments. If False, then mojom type
369 # information will not be generated. 375 # information will not be generated.
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 # Overrides the implementation from the base class in order to customize the 500 # Overrides the implementation from the base class in order to customize the
495 # struct and field names. 501 # struct and field names.
496 def _GetResponseStructFromMethod(self, method): 502 def _GetResponseStructFromMethod(self, method):
497 params_class = "%s_%s_ResponseParams" % ( 503 params_class = "%s_%s_ResponseParams" % (
498 GetNameForElement(method.interface), GetNameForElement(method)) 504 GetNameForElement(method.interface), GetNameForElement(method))
499 struct = mojom.Struct(params_class, module=method.interface.module) 505 struct = mojom.Struct(params_class, module=method.interface.module)
500 for param in method.response_parameters: 506 for param in method.response_parameters:
501 struct.AddField("out%s" % GetNameForElement(param), 507 struct.AddField("out%s" % GetNameForElement(param),
502 param.kind, param.ordinal, attributes=param.attributes) 508 param.kind, param.ordinal, attributes=param.attributes)
503 return self._AddStructComputedData(False, struct) 509 return self._AddStructComputedData(False, struct)
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/generators/go_templates/mojom_type_macros.tmpl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698