MCPcopy
hub / github.com/KhronosGroup/Vulkan-Docs / beginFeature

Method beginFeature

scripts/base_generator.py:1343–1377  ·  view source on GitHub ↗
(self, interface, emit)

Source from the content-addressed store, hash-verified

1341 OutputGenerator.endFile(self)
1342
1343 def beginFeature(self, interface, emit):
1344 # We intentionally skip default BaseGenerator behavior
1345 OutputGenerator.beginFeature(self, interface, emit)
1346
1347 # Only "extension" is possible in the video.xml, identifying the Video Std header
1348 assert interface.tag == 'extension'
1349 name = interface.get('name')
1350 version: (str | None) = None
1351 depends: list[str] = []
1352
1353 # Handle Video Std header version constant
1354 for enum in interface.findall('require/enum[@value]'):
1355 enumName = enum.get('name')
1356 if enumName.endswith('_SPEC_VERSION'):
1357 version = enum.get('value')
1358
1359 # Handle dependencies on other Video Std headers
1360 for type in interface.findall('require/type[@name]'):
1361 typeName = type.get('name')
1362 if typeName.startswith('vk_video/'):
1363 depends.append(typeName[len('vk_video/'):-len('.h')])
1364
1365 headerFile = f'vk_video/{name}.h'
1366
1367 self.vk.videoStd.headers[name] = VideoStdHeader(name, version, headerFile, depends)
1368
1369 self.currentVideoStdHeader = self.vk.videoStd.headers[name]
1370
1371 # Handle constants here as that seems the most straightforward
1372 constantNames = []
1373 for enum in interface.findall('require/enum[@type]'):
1374 constantNames.append(enum.get('name'))
1375 self.addConstants(constantNames)
1376 for constantName in constantNames:
1377 self.vk.constants[constantName].videoStdHeader = self.currentVideoStdHeader.name
1378
1379 def endFeature(self):
1380 self.currentVideoStdHeader = None

Callers

nothing calls this directly

Calls 5

VideoStdHeaderClass · 0.90
appendMethod · 0.80
addConstantsMethod · 0.80
beginFeatureMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected