Lines Matching refs:self
312 def __init__(self,
332 GeneratorOptions.__init__(self, **kwargs)
333 self.isCTS = isCTS
342 def __init__(self, *args, **kwargs):
345 self.sections = {section: [] for section in self.ALL_SECTIONS}
346 self.feature_not_empty = False
347 self.may_alias = None
348 self.featureDict = {}
349 self.vkscFeatureList = []
350 self.constDict = {}
351 self.baseTypeDict = {
367 def parseBaseTypes(self):
368 for baseType in self.baseTypeDict:
369 printStr = self.baseTypeDict[baseType]
371 write("static void parse_%s(const char* s, Json::Value& obj, %s& o)\n" %(baseType, self.baseTypeListMap[baseType]) +
373 " o = static_cast<%s>(%s);\n" %(self.baseTypeListMap[baseType],printStr) +
375 , file=self.outFile
379 code += "static void parse_%s(const char* s, Json::Value& obj, %s& o)\n" %(baseType, self.baseTypeListMap[baseType])
381 if baseType in self.constDict:
383 for index, enumValue in enumerate(self.constDict[baseType]):
396 write(code, file=self.outFile)
398 def createvkscFeatureList(self):
399 for feature in self.registry.reg.findall('feature'):
408 self.featureDict[typeName.get("name")] = feature.get("name")
409 self.vkscFeatureList.append(typeName.get("name"))
415 if self.vkscFeatureList.count(item.get("name")) > 0:
416 self.vkscFeatureList.remove(item.get("name"))
418 allExtensions = self.registry.reg.findall('extensions')
427 self.featureDict[typeName.get("name")] = extension.get("name")
428 self.vkscFeatureList.append(typeName.get("name"))
430 def createConstDict(self):
431 for enums in self.registry.reg.findall('enums'):
438 if type not in self.constDict:
439 self.constDict[type] = [(name, value)]
441 self.constDict[type].append((name, value))
443 def printPrototypes(self):
447 typesList = self.registry.reg.findall('types')
457 if cat in {"handle", "bitmask", "basetype", "enum", "struct"} and name in self.vkscFeatureList:
458 if name in self.featureDict and currentExtension != self.featureDict[name]:
459 if not self.isCTS and currentExtension != "VK_VERSION_1_0":
461 currentExtension = self.featureDict[name]
462 if self.featureDict[name] != "VK_VERSION_1_0":
463 if not self.isCTS:
468 if not self.isCTS:
474 def genStructExtensionCode(self):
485 typesList = self.registry.reg.findall('types')
490 if type.get('category') == 'struct' and type.get('structextends') is not None and type.get('name') in self.vkscFeatureList:
495 if n in self.featureDict and currentExtension != self.featureDict[n]:
496 if not self.isCTS and currentExtension != "VK_VERSION_1_0":
498 currentExtension = self.featureDict[n]
499 if self.featureDict[n] != "VK_VERSION_1_0":
500 if not self.isCTS:
511 if not self.isCTS:
520 def beginFile(self, genOpts):
521 OutputGenerator.beginFile(self, genOpts)
523 self.createvkscFeatureList()
524 self.createConstDict()
526 self.isCTS = genOpts.isCTS
528 self.baseTypeListMap = {
529 "int32_t" : "deInt32" if self.isCTS else "int32_t",
530 "uint32_t" : "deUint32" if self.isCTS else "uint32_t",
531 "uint8_t" : "deUint8" if self.isCTS else "uint8_t",
532 "uint64_t" : "deUint64" if self.isCTS else "uint64_t",
536 "int64_t" : "deInt64" if self.isCTS else "int64_t",
537 "uint16_t" : "deUint16" if self.isCTS else "uint16_t",
538 "NvSciBufAttrList" : "vk::pt::NvSciBufAttrList" if self.isCTS else "NvSciBufAttrList",
539 "NvSciBufObj" : "vk::pt::NvSciBufObj" if self.isCTS else "NvSciBufObj",
540 "NvSciSyncAttrList" : "vk::pt::NvSciSyncAttrList" if self.isCTS else "NvSciSyncAttrList",
541 "NvSciSyncObj" : "vk::pt::NvSciSyncObj" if self.isCTS else "NvSciSyncObj"
544 write(headerGuardTop, file=self.outFile, end='')
545 write(copyright, file=self.outFile)
546 write(predefinedCode % (self.baseTypeListMap["uint8_t"],
547 self.baseTypeListMap["uint32_t"],
548 self.baseTypeListMap["uint8_t"],
549 self.baseTypeListMap["uint32_t"],
550 self.baseTypeListMap["uint32_t"],
551 self.baseTypeListMap["uint32_t"],
552 self.baseTypeListMap["uint32_t"]), file=self.outFile)
554 self.parseBaseTypes()
555 if self.isCTS:
556 write(base64DecodeCodeCTS, file=self.outFile)
558 write(base64DecodeCode, file=self.outFile)
560 write(self.printPrototypes(), file=self.outFile)
562 write(self.genStructExtensionCode(), file=self.outFile)
564 def endFile(self):
565 write("}//End of namespace vk_json_parser\n", file=self.outFile) # end of namespace
566 write(headerGuardBottom, file=self.outFile, end='') # end of _VULKAN_JSON_PARSER_HPP
567 OutputGenerator.endFile(self)
569 def beginFeature(self, interface, emit):
570 OutputGenerator.beginFeature(self, interface, emit)
571 self.sections = {section: [] for section in self.ALL_SECTIONS}
572 self.feature_not_empty = False
574 def endFeature(self):
575 if self.emit:
576 if self.feature_not_empty:
577 if self.genOpts.conventions.writeFeature(self.featureExtraProtect, self.genOpts.filename):
579 for section in self.TYPE_SECTIONS:
580 contents = self.sections[section]
582 write('\n'.join(contents), file=self.outFile)
585 OutputGenerator.endFeature(self)
587 def appendSection(self, section, text):
588 self.sections[section].append(text)
589 self.feature_not_empty = True
591 def genEnumCode(self, name, endIfdef):
597 if not self.isCTS and endIfdef:
602 def genBasetypeCode(self, str1, str2, name):
623 def genHandleCode(self, str1, str2, name):
626 if name in self.featureDict and self.featureDict[name] != "VK_VERSION_1_0":
627 ifdefName = self.featureDict[name]
628 if not self.isCTS and ifdefName != "":
633 if not self.isCTS and ifdefName != "":
637 def genBitmaskCode(self, str1, str2, name, mapName):
640 if mapName in self.featureDict and self.featureDict[mapName] != "VK_VERSION_1_0":
641 ifdefName = self.featureDict[mapName]
642 elif name in self.featureDict and self.featureDict[name] != "VK_VERSION_1_0":
643 ifdefName = self.featureDict[name]
645 if not self.isCTS:
678 if not self.isCTS and ifdefName != "":
683 def genType(self, typeinfo, name, alias):
684 OutputGenerator.genType(self, typeinfo, name, alias)
695 self.genStruct(typeinfo, name, alias)
700 body += self.genBitmaskCode("(", " obj,", elem.text, typeElem.get('requires'))
705 body += self.genBasetypeCode("(", " obj,", elem.text)
710 body += self.genHandleCode("(", " obj,", elem.text)
713 self.appendSection(section, body)
715 def paramIsStruct(self, memberType):
716 if str(self.getTypeCategory(memberType)) == 'struct':
721 def paramIsPointer(self, param):
729 def paramIsStaticArray(self, param):
742 def paramIsStaticArrayWithMacroSize(self, param):
751 def paramIsCharStaticArrayWithMacroSize(self, param):
758 def generateStructMembercode(self, param, str1, str2, str3, str4, memberName, typeName, isCommaNeeded):
766 if self.paramIsPointer(param) is True and isArr is True:
776 elif self.paramIsPointer(param) is True:
800 def genArrayCode(self, structName, name, typeName, str2, arraySize, needStrPrint, isMallocNeeded):
802 mappedType = self.baseTypeListMap[typeName] if self.baseTypeListMap.get(typeName) != None else typeName
803 if structName == "VkPipelineLayoutCreateInfo" and self.isCTS:
824 def genEmptyCode(self, memberName, isCommaNeeded):
828 def genCTSHandleCode(self, memberName, typeName):
835 def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded):
853 if self.paramIsStaticArray(param):
854 return self.genArrayCode(structName, memberName, typeName, str2, self.paramIsStaticArray(param), False, isCommaNeeded)
856 elif self.paramIsStaticArrayWithMacroSize(param):
858 return self.genArrayCode(structName, memberName, typeName, str2, arraySize, False, isCommaNeeded)
861 elif self.paramIsStruct(typeName) == 1:
862 code += self.generateStructMembercode(param, str1, str2, str3, str4, memberName, typeName, isCommaNeeded)
865 elif self.paramIsPointer(param) and typeName == 'void':
870 code += " void* data = s_globalMem.allocate(%s(%sdataSize));\n" %(self.baseTypeListMap["uint32_t"] ,str2[1:])
877 if self.isCTS:
881 code += " void* data = s_globalMem.allocate(%s(%sinitialDataSize));\n" %(self.baseTypeListMap["uint32_t"], str2[1:])
891 elif self.paramIsPointer(param) and param.get('len') is not None and param.get('len').find('null-terminated') == -1 and param.get('len').find('latexmath') == -1:
894 return self.genArrayCode(structName, memberName, typeName, str2, str2+param.get('len')+")", False, True)
896 if structName == "VkDescriptorSetLayoutBinding" and self.isCTS:
913 return self.genEmptyCode(memberName, isCommaNeeded)
917 arraySize = "(%s(o.rasterizationSamples + 31) / 32)" %(self.baseTypeListMap["uint32_t"])
923 code += " for (%s i = 0; i < %s; i++) {\n" %(self.baseTypeListMap["uint32_t"], arraySize)
929 elif str(self.getTypeCategory(typeName)) == 'handle':
930 if self.isCTS and (memberName == "module" or memberName == "layout" or memberName == "renderPass" or memberName == "conversion"):
931 return self.genCTSHandleCode(memberName, typeName)
932 return self.genEmptyCode(memberName, isCommaNeeded)
935 if self.paramIsCharStaticArrayWithMacroSize(param) == 0:
949 def genStruct(self, typeinfo, typeName, alias):
950 OutputGenerator.genStruct(self, typeinfo, typeName, alias)
955 if typeName in self.featureDict and self.featureDict[typeName] != "VK_VERSION_1_0":
957 if not self.isCTS:
958 body = "#ifdef %s\n" %(self.featureDict[typeName])
973 body += self.genStructCode(member, genStr1[index], genStr2[index], genStr3[index], genStr4[index], typeName, 0)
978 if not self.isCTS and ifdefNeeded:
981 self.appendSection('struct', body)
983 def genGroup(self, groupinfo, groupName, alias=None):
984 OutputGenerator.genGroup(self, groupinfo, groupName, alias)
990 if groupName in self.featureDict and self.featureDict[groupName] != "VK_VERSION_1_0":
992 if not self.isCTS:
993 body += "#ifdef %s\n" %(self.featureDict[groupName])
996 body += "static std::map<std::string, %s> %s_map = {\n" %(self.baseTypeListMap["uint64_t"],groupName)
1014 enumVal = self.extBase + (extNumber - 1) * self.extBlockSize + offset
1018 body += self.genEnumCode(groupName, ifdefNeeded)
1020 self.appendSection(section, body)