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

Method isStructAlwaysValid

scripts/generator.py:1282–1329  ·  view source on GitHub ↗

Try to do check if a structure is always considered valid (i.e. there is no rules to its acceptance).

(self, structname)

Source from the content-addressed store, hash-verified

1280 return None
1281
1282 def isStructAlwaysValid(self, structname):
1283 """Try to do check if a structure is always considered valid (i.e. there is no rules to its acceptance)."""
1284 # A conventions object is required for this call.
1285 if not self.conventions:
1286 raise RuntimeError("To use isStructAlwaysValid, be sure your options include a Conventions object.")
1287 if self.registry is None:
1288 raise MissingRegistryError()
1289
1290 if self.conventions.type_always_valid(structname):
1291 return True
1292
1293 category = self.getTypeCategory(structname)
1294 if self.conventions.category_requires_validation(category):
1295 return False
1296
1297 info = self.registry.typedict.get(structname)
1298 if info is None:
1299 self.logMsg('error', f'isStructAlwaysValid({structname}) - structure not found in typedict')
1300
1301 members = info.getMembers()
1302
1303 for member in members:
1304 member_name = getElemName(member)
1305 if member_name in (self.conventions.structtype_member_name,
1306 self.conventions.nextpointer_member_name):
1307 return False
1308
1309 if member.get('noautovalidity'):
1310 return False
1311
1312 member_type = getElemType(member)
1313
1314 if member_type in ('void', 'char') or self.paramIsArray(member) or self.paramIsPointer(member):
1315 return False
1316
1317 if self.conventions.type_always_valid(member_type):
1318 continue
1319
1320 member_category = self.getTypeCategory(member_type)
1321
1322 if self.conventions.category_requires_validation(member_category):
1323 return False
1324
1325 if member_category in ('struct', 'union'):
1326 if self.isStructAlwaysValid(member_type) is False:
1327 return False
1328
1329 return True
1330
1331 def paramIsArray(self, param):
1332 """Check if the parameter passed in is a pointer to an array.

Calls 11

getTypeCategoryMethod · 0.95
logMsgMethod · 0.95
paramIsArrayMethod · 0.95
paramIsPointerMethod · 0.95
getElemNameFunction · 0.90
getElemTypeFunction · 0.90
type_always_validMethod · 0.80
getMembersMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected