Lines Matching refs:self
24 def __init__(self, cgen, inputVars, poolVarName, rootVarName, prefix, skipValues=False): argument
25 self.cgen = cgen
26 self.inputVars = inputVars
27 self.prefix = prefix
28 self.poolVarName = poolVarName
29 self.rootVarName = rootVarName
30 self.skipValues = skipValues
33 return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
36 return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
39 return lambda t: self.cgen.generalLengthAccessGuard(t, parentVarName=varName)
41 self.exprAccessorLhs = makeAccess(self.inputVars[0])
42 self.exprAccessorRhs = makeAccess(self.inputVars[1])
44 self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
45 self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
47 self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
48 self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
50 self.lenAccessorGuardLhs = makeLengthAccessGuard(self.inputVars[0])
51 self.lenAccessorGuardRhs = makeLengthAccessGuard(self.inputVars[1])
53 self.checked = False
55 def needSkip(self, vulkanType): argument
58 def makeCastExpr(self, vulkanType): argument
60 self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
62 def makeNonConstCastForCopy(self, access, vulkanType): argument
64 …casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), a…
66 casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
68 …casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), a…
71 def makeAllocBytesExpr(self, lenAccess, vulkanType): argument
72 sizeof = self.cgen.sizeofExpr( \
81 def onCheck(self, vulkanType): argument
84 def endCheck(self, vulkanType): argument
87 def onCompoundType(self, vulkanType): argument
89 if self.needSkip(vulkanType):
90 self.cgen.line("// TODO: Unsupported : %s" %
91 self.cgen.makeCTypeDecl(vulkanType))
94 accessLhs = self.exprAccessorLhs(vulkanType)
95 accessRhs = self.exprAccessorRhs(vulkanType)
97 lenAccessLhs = self.lenAccessorLhs(vulkanType)
98 lenAccessRhs = self.lenAccessorRhs(vulkanType)
100 lenAccessorGuardLhs = self.lenAccessorGuardLhs(vulkanType)
101 lenAccessorGuardRhs = self.lenAccessorGuardRhs(vulkanType)
106 self.cgen.beginIf(lenAccessorGuardLhs)
109 self.cgen.stmt("%s = nullptr" % accessRhs)
110 self.cgen.beginIf(accessLhs)
112 self.cgen.stmt( \
114 (accessRhs, self.makeCastExpr(vulkanType.getForNonConstAccess()),
115 self.poolVarName, self.makeAllocBytesExpr(lenAccessLhs, vulkanType)))
128 self.cgen.stmt("%s = %s" % (lenAccessRhs, lenAccessLhs))
131 self.cgen.beginFor(forInit, forCond, forIncr)
134 accessRhsCasted = self.makeNonConstCastForCopy(accessRhs, vulkanType)
136 self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
137 [self.poolVarName, self.rootVarName, accessLhs, accessRhsCasted])
140 self.cgen.endFor()
143 self.cgen.endIf()
146 self.cgen.endIf()
148 def onString(self, vulkanType): argument
149 accessLhs = self.exprAccessorLhs(vulkanType)
150 accessRhs = self.exprAccessorRhs(vulkanType)
152 self.cgen.stmt("%s = nullptr" % accessRhs)
153 self.cgen.beginIf(accessLhs)
155 self.cgen.stmt( \
158 self.poolVarName,
161 self.cgen.endIf()
163 def onStringArray(self, vulkanType): argument
164 accessLhs = self.exprAccessorLhs(vulkanType)
165 accessRhs = self.exprAccessorRhs(vulkanType)
167 lenAccessLhs = self.lenAccessorLhs(vulkanType)
169 self.cgen.stmt("%s = nullptr" % accessRhs)
170 self.cgen.beginIf("%s && %s" % (accessLhs, lenAccessLhs))
172 self.cgen.stmt( \
175 self.poolVarName,
179 self.cgen.endIf()
181 def onStaticArr(self, vulkanType): argument
182 accessLhs = self.exprAccessorValueLhs(vulkanType)
183 accessRhs = self.exprAccessorValueRhs(vulkanType)
185 lenAccessLhs = self.lenAccessorLhs(vulkanType)
187 bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
188 self.cgen.stmt("memcpy(%s, %s, %s)" % (accessRhs, accessLhs, bytesExpr))
190 def onStructExtension(self, vulkanType): argument
192 lhs = self.exprAccessorLhs(vulkanType)
193 rhs = self.exprAccessorRhs(vulkanType)
200 self.cgen.beginIf("%s == VK_STRUCTURE_TYPE_MAX_ENUM" %
201 self.rootVarName)
202 self.cgen.stmt("%s = from->sType" % self.rootVarName)
203 self.cgen.endIf()
205 self.cgen.stmt("const void* %s = %s" % (nextVar, self.inputVars[0]))
206 self.cgen.stmt("size_t %s = 0u" % sizeVar)
207 self.cgen.beginWhile("!%s && %s" % (sizeVar, nextVar))
208 self.cgen.stmt("%s = static_cast<const vk_struct_common*>(%s)->%s" % (
211 self.cgen.stmt("%s = %s(%s, %s)" % (
212 sizeVar, EXTENSION_SIZE_API_NAME, self.rootVarName, nextVar))
213 self.cgen.endWhile()
215 self.cgen.stmt("%s = nullptr" % rhs)
217 self.cgen.beginIf(sizeVar)
219 self.cgen.stmt( \
221 (rhs, self.makeCastExpr(vulkanType.getForNonConstAccess()), self.poolVarName, sizeVar))
223 self.cgen.funcCall(None, self.prefix + "extension_struct",
224 [self.poolVarName, self.rootVarName, nextVar, rhsExpr])
226 self.cgen.endIf()
228 def onPointer(self, vulkanType): argument
230 accessLhs = self.exprAccessorLhs(vulkanType)
231 accessRhs = self.exprAccessorRhs(vulkanType)
233 if self.needSkip(vulkanType):
234 self.cgen.stmt("%s = nullptr" % accessRhs)
237 lenAccessLhs = self.lenAccessorLhs(vulkanType)
239 self.cgen.stmt("%s = nullptr" % accessRhs)
240 self.cgen.beginIf(accessLhs)
242 bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
244 self.cgen.stmt( \
247 self.makeCastExpr(vulkanType.getForNonConstAccess()),
248 self.poolVarName,
252 self.cgen.endIf()
254 def onValue(self, vulkanType): argument
255 if self.skipValues:
258 accessLhs = self.exprAccessorValueLhs(vulkanType)
259 accessRhs = self.exprAccessorValueRhs(vulkanType)
261 self.cgen.stmt("%s = %s" % (accessRhs, accessLhs))
265 def __init__(self, module, typeInfo): argument
266 VulkanWrapperGenerator.__init__(self, module, typeInfo)
268 self.codegen = CodeGen()
270 self.deepcopyPrefix = "deepcopy_"
271 self.deepcopyVars = ["from", "to"]
272 self.deepcopyAllocatorVarName = "alloc"
273 self.deepcopyAllocatorParam = \
275 self.deepcopyAllocatorVarName)
276 self.deepcopyRootVarName = "rootType"
277 self.deepcopyRootParam = \
279 0, self.deepcopyRootVarName)
280 self.voidType = makeVulkanTypeSimple(False, "void", 0)
282 self.deepcopyCodegen = \
285 self.deepcopyVars,
286 self.deepcopyAllocatorVarName,
287 self.deepcopyRootVarName,
288 self.deepcopyPrefix,
291 self.knownDefs = {}
293 self.extensionDeepcopyPrototype = \
294 VulkanAPI(self.deepcopyPrefix + "extension_struct",
295 self.voidType,
296 [self.deepcopyAllocatorParam,
297 self.deepcopyRootParam,
301 def onBegin(self,): argument
302 VulkanWrapperGenerator.onBegin(self)
303 self.module.appendImpl(self.codegen.makeFuncDecl(
304 self.extensionDeepcopyPrototype))
306 def onGenType(self, typeXml, name, alias): argument
307 VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
309 if name in self.knownDefs:
312 category = self.typeInfo.categoryOf(name)
315 self.module.appendHeader(
316 self.codegen.makeFuncAlias(self.deepcopyPrefix + name,
317 self.deepcopyPrefix + alias))
321 structInfo = self.typeInfo.structs[name]
328 [self.deepcopyAllocatorParam, self.deepcopyRootParam] + \
329 list(map(typeFromName, self.deepcopyVars))
332 VulkanAPI(self.deepcopyPrefix + name,
333 self.voidType,
337 self.deepcopyCodegen.cgen = cgen
340 if not member.isSimpleValueType(self.typeInfo):
343 cgen.stmt("(void)%s" % self.deepcopyAllocatorVarName)
344 cgen.stmt("(void)%s" % self.deepcopyRootVarName)
350 iterateVulkanType(self.typeInfo, member,
351 self.deepcopyCodegen)
353 self.module.appendHeader(
354 self.codegen.makeFuncDecl(deepcopyPrototype))
355 self.module.appendImpl(
356 self.codegen.makeFuncImpl(deepcopyPrototype, structDeepcopyDef))
358 def onGenCmd(self, cmdinfo, name, alias): argument
359 VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
361 def onEnd(self,): argument
362 VulkanWrapperGenerator.onEnd(self)
370 cgen.funcCall(None, self.deepcopyPrefix + ext.name,
371 [self.deepcopyAllocatorVarName,
372 self.deepcopyRootVarName,
375 self.module.appendImpl(
376 self.codegen.makeFuncImpl(
377 self.extensionDeepcopyPrototype,
378 lambda cgen: self.emitForEachStructExtension(
380 self.voidType,
383 rootTypeVar=self.deepcopyRootParam)))