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

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

Issue 226263002: Mojo: Move mojo/public/bindings to mojo/public/tools/bindings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 8 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
(Empty)
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
3 # found in the LICENSE file.
4
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.
7 #
8 # A simple interface would be created this way:
9 # module = mojom.Module('Foo')
10 # interface = module.AddInterface('Bar')
11 # method = interface.AddMethod('Tat', 0)
12 # method.AddParameter('baz', 0, mojom.INT32)
13 #
14
15 class Kind(object):
16 def __init__(self, spec = None):
17 self.spec = spec
18 self.parent_kind = None
19
20 # Initialize the set of primitive types. These can be accessed by clients.
21 BOOL = Kind('b')
22 INT8 = Kind('i8')
23 INT16 = Kind('i16')
24 INT32 = Kind('i32')
25 INT64 = Kind('i64')
26 UINT8 = Kind('u8')
27 UINT16 = Kind('u16')
28 UINT32 = Kind('u32')
29 UINT64 = Kind('u64')
30 FLOAT = Kind('f')
31 DOUBLE = Kind('d')
32 STRING = Kind('s')
33 HANDLE = Kind('h')
34 DCPIPE = Kind('h:d:c')
35 DPPIPE = Kind('h:d:p')
36 MSGPIPE = Kind('h:m')
37 SHAREDBUFFER = Kind('h:s')
38
39
40 # Collection of all Primitive types
41 PRIMITIVES = (
42 BOOL,
43 INT8,
44 INT16,
45 INT32,
46 INT64,
47 UINT8,
48 UINT16,
49 UINT32,
50 UINT64,
51 FLOAT,
52 DOUBLE,
53 STRING,
54 HANDLE,
55 DCPIPE,
56 DPPIPE,
57 MSGPIPE,
58 SHAREDBUFFER
59 )
60
61
62 class Constant(object):
63 def __init__(self, module, enum, field):
64 self.namespace = module.namespace
65 self.parent_kind = enum.parent_kind
66 self.name = [enum.name, field.name]
67 self.imported_from = None
68
69 def GetSpec(self):
70 return (self.namespace + '.' +
71 (self.parent_kind and (self.parent_kind.name + '.') or "") + \
72 self.name[1])
73
74
75 class Field(object):
76 def __init__(self, name = None, kind = None, ordinal = None, default = None):
77 self.name = name
78 self.kind = kind
79 self.ordinal = ordinal
80 self.default = default
81
82
83 class Struct(Kind):
84 def __init__(self, name = None):
85 self.name = name
86 self.imported_from = None
87 if name != None:
88 spec = 'x:' + name
89 else:
90 spec = None
91 Kind.__init__(self, spec)
92 self.fields = []
93
94 def AddField(self, name, kind, ordinal = None, default = None):
95 field = Field(name, kind, ordinal, default)
96 self.fields.append(field)
97 return field
98
99
100 class Array(Kind):
101 def __init__(self, kind = None):
102 self.kind = kind
103 if kind != None:
104 Kind.__init__(self, 'a:' + kind.spec)
105 else:
106 Kind.__init__(self)
107
108
109 class Parameter(object):
110 def __init__(self, name = None, kind = None, ordinal = None, default = None):
111 self.name = name
112 self.ordinal = ordinal
113 self.kind = kind
114 self.default = default
115
116
117 class Method(object):
118 def __init__(self, name = None, ordinal = None):
119 self.name = name
120 self.ordinal = ordinal
121 self.parameters = []
122 self.response_parameters = None
123
124 def AddParameter(self, name, kind, ordinal = None, default = None):
125 parameter = Parameter(name, kind, ordinal, default)
126 self.parameters.append(parameter)
127 return parameter
128
129 def AddResponseParameter(self, name, kind, ordinal = None, default = None):
130 if self.response_parameters == None:
131 self.response_parameters = []
132 parameter = Parameter(name, kind, ordinal, default)
133 self.response_parameters.append(parameter)
134 return parameter
135
136
137 class Interface(Kind):
138 def __init__(self, name = None, peer = None):
139 self.name = name
140 if name != None:
141 spec = 'x:' + name
142 else:
143 spec = None
144 Kind.__init__(self, spec)
145 self.peer = peer
146 self.methods = []
147
148 def AddMethod(self, name, ordinal = None):
149 method = Method(name, ordinal)
150 self.methods.append(method)
151 return method;
152
153
154 class EnumField(object):
155 def __init__(self, name = None, value = None):
156 self.name = name
157 self.value = value
158
159
160 class Enum(Kind):
161 def __init__(self, name = None):
162 self.name = name
163 self.imported_from = None
164 if name != None:
165 spec = 'x:' + name
166 else:
167 spec = None
168 Kind.__init__(self, spec)
169 self.fields = []
170
171
172 class Module(object):
173 def __init__(self, name = None, namespace = None):
174 self.name = name
175 self.path = name
176 self.namespace = namespace
177 self.structs = []
178 self.interfaces = []
179
180 def AddInterface(self, name):
181 interface = Interface(name);
182 self.interfaces.append(interface)
183 return interface;
184
185 def AddStruct(self, name):
186 struct = Struct(name)
187 self.structs.append(struct)
188 return struct;
OLDNEW
« no previous file with comments | « mojo/public/bindings/pylib/generate/__init__.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