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

Side by Side Diff: mojo/monacl/gen/interface_dsl.py

Issue 385983008: Mojo + NaCl prototype. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Better diff Created 6 years, 5 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
OLDNEW
(Empty)
1 # Copyright 2014 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 class Interface(object):
6 def __init__(self):
7 self.functions = []
8
9 def func(self, name, returnType):
10 f = Function(self, len(self.functions), name, returnType)
11 self.functions.append(f)
12 return f
13
14 def finalize(self):
15 for f in self.functions:
16 f.finalize()
17
18 class Function(object):
19 def __init__(self, parent, uid, name, returnType):
20 self.parent = parent
21 self.uid = uid
22 self.name = name
23 self.returnType = returnType
24 self.params = []
25 self.paramLUT = {}
26
27 def param(self, name, paramType=None):
28 p = Param(self, len(self.params), name, paramType)
29 self.params.append(p)
30 self.paramLUT[name] = p
31 return p
32
33 def paramList(self):
34 return [param.paramType + " "+ param.name for param in self.params]
35
36 def paramDecl(self):
37 if self.params:
38 return ", ".join(self.paramList())
39 else:
40 return "void"
41
42 def finalize(self):
43 for p in self.params:
44 p.finalize()
45 self.resultParam = Param(self, len(self.params), "result").out(self.returnTy pe)
46
47 class Param(object):
48 def __init__(self, parent, uid, name, paramType=None):
49 self.parent = parent
50 self.uid = uid
51 self.name = name
52 self.baseType = paramType
53 self.paramType = paramType
54 self.size = None
55 self.isInput = False
56 self.isOutput = False
57 self.isArray = False
58 self.isStruct = False
59 self.isOptional = False
60
61 def getSizeParam(self):
62 assert self.size
63 return self.parent.paramLUT[self.size]
64
65 def inp(self, t):
66 self.baseType = t
67 self.paramType = t
68 self.isInput = True
69 return self
70
71 def inArray(self, t, size):
72 self.baseType = t
73 self.paramType = "const " + t + "*"
74 self.size = size
75 self.isInput = True
76 self.isArray = True
77 return self
78
79 def inStruct(self, t):
80 self.baseType = t
81 self.paramType = "const struct " + t + "*"
82 self.isInput = True
83 self.isStruct = True
84 return self
85
86 def inOut(self, t):
87 self.baseType = t
88 self.paramType = t + "*"
89 self.isInput = True
90 self.isOutput = True
91 return self
92
93 def out(self, t):
94 self.baseType = t
95 self.paramType = t + "*"
96 self.isOutput = True
97 return self
98
99 def outArray(self, t, size):
100 self.baseType = t
101 self.paramType = t + "*"
102 self.size = size
103 self.isArray = True
104 self.isOutput = True
105 return self
106
107 def optional(self):
108 assert not self.isPassedByValue()
109 self.isOptional = True
110 return self
111
112 def isScalar(self):
113 return not self.isArray and not self.isStruct
114
115 def isPassedByValue(self):
116 return not self.isOutput and self.isScalar()
117
118 def finalize(self):
119 pass
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698