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

Side by Side Diff: mojo/public/bindings/pylib/generate/mojom.py

Issue 159983003: Fix a bug with mojom imports where 2 imports with the same namespace would (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 10 months 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 | Annotate | Revision Log
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 # mojom's classes provide an interface to mojo modules. Modules are collections 5 # mojom's classes provide an interface to mojo modules. Modules are collections
6 # of interfaces and structs to be used by mojo ipc clients and servers. 6 # of interfaces and structs to be used by mojo ipc clients and servers.
7 # 7 #
8 # A simple interface would be created this way: 8 # A simple interface would be created this way:
9 # module = mojom.Module('Foo') 9 # module = mojom.Module('Foo')
10 # interface = module.AddInterface('Bar') 10 # interface = module.AddInterface('Bar')
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 def __init__(self, name = None, kind = None, ordinal = None, default = None): 62 def __init__(self, name = None, kind = None, ordinal = None, default = None):
63 self.name = name 63 self.name = name
64 self.kind = kind 64 self.kind = kind
65 self.ordinal = ordinal 65 self.ordinal = ordinal
66 self.default = default 66 self.default = default
67 67
68 68
69 class Struct(Kind): 69 class Struct(Kind):
70 def __init__(self, name = None): 70 def __init__(self, name = None):
71 self.name = name 71 self.name = name
72 self.imported_from_namespace = None 72 self.imported_from = None
73 if name != None: 73 if name != None:
74 spec = 'x:' + name 74 spec = 'x:' + name
75 else: 75 else:
76 spec = None 76 spec = None
77 Kind.__init__(self, spec) 77 Kind.__init__(self, spec)
78 self.fields = [] 78 self.fields = []
79 79
80 @classmethod 80 @classmethod
81 def CreateFromImport(cls, kind, import_namespace): 81 def CreateFromImport(cls, kind, imported_from):
82 """Used with 'import module' - clones the kind imported from the 82 """Used with 'import module' - clones the kind imported from the
83 given module's namespace.""" 83 given module's namespace."""
84 kind = copy.deepcopy(kind) 84 kind = copy.deepcopy(kind)
85 kind.imported_from_namespace = import_namespace 85 kind.imported_from = imported_from
86 return kind 86 return kind
87 87
88 def AddField(self, name, kind, ordinal = None, default = None): 88 def AddField(self, name, kind, ordinal = None, default = None):
89 field = Field(name, kind, ordinal, default) 89 field = Field(name, kind, ordinal, default)
90 self.fields.append(field) 90 self.fields.append(field)
91 return field 91 return field
92 92
93 def GetFullName(self, separator): 93 def GetFullName(self, separator):
94 """Returns the fully qualified type name, including namespace prefix.""" 94 """Returns the fully qualified type name, including namespace prefix."""
95 if self.imported_from_namespace: 95 if self.imported_from:
96 return separator.join([self.imported_from_namespace, self.name]) 96 return separator.join([self.imported_from["namespace"], self.name])
97 return self.name 97 return self.name
98 98
99 def GetFullNameInternal(self, separator): 99 def GetFullNameInternal(self, separator):
100 """Returns the fully qualified type name for an internal data structure, 100 """Returns the fully qualified type name for an internal data structure,
101 including namespace prefix.""" 101 including namespace prefix."""
102 if self.imported_from_namespace: 102 if self.imported_from:
103 return separator.join( 103 return separator.join(
104 [self.imported_from_namespace, "internal", self.name]) 104 [self.imported_from["namespace"], "internal", self.name])
105 return self.name 105 return self.name
106 106
107 107
108 class Array(Kind): 108 class Array(Kind):
109 def __init__(self, kind = None): 109 def __init__(self, kind = None):
110 self.kind = kind 110 self.kind = kind
111 if kind != None: 111 if kind != None:
112 Kind.__init__(self, 'a:' + kind.spec) 112 Kind.__init__(self, 'a:' + kind.spec)
113 else: 113 else:
114 Kind.__init__(self) 114 Kind.__init__(self)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 172
173 def AddInterface(self, name): 173 def AddInterface(self, name):
174 interface = Interface(name); 174 interface = Interface(name);
175 self.interfaces.append(interface) 175 self.interfaces.append(interface)
176 return interface; 176 return interface;
177 177
178 def AddStruct(self, name): 178 def AddStruct(self, name):
179 struct = Struct(name) 179 struct = Struct(name)
180 self.structs.append(struct) 180 self.structs.append(struct)
181 return struct; 181 return struct;
OLDNEW
« no previous file with comments | « mojo/public/bindings/mojom_bindings_generator.py ('k') | mojo/public/bindings/pylib/generate/mojom_data.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698