| OLD | NEW |
| (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; | |
| OLD | NEW |