aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMike Schuchardt <mikes@lunarg.com>2017-12-28 11:23:48 -0700
committerMike Schuchardt <mikes@lunarg.com>2018-03-09 13:54:31 -0700
commit9b3669f17e475f0d713eb8a0ae794d04b3ea63ca (patch)
treee0fbf6f681ed2d9767227b39873a0b4cbf74715d /scripts
parentdb1b42a438ee40104034ba3ee613f3799b5fcd07 (diff)
downloadusermoji-9b3669f17e475f0d713eb8a0ae794d04b3ea63ca.tar.xz
scripts: Update codegen to work with new aliasing
Change-Id: I3739f7b7b6eb17a5e3e1bc9cc18e74569cb50f95
Diffstat (limited to 'scripts')
-rw-r--r--scripts/dispatch_table_helper_generator.py4
-rw-r--r--scripts/helper_file_generator.py19
-rw-r--r--scripts/loader_extension_generator.py4
-rw-r--r--scripts/mock_icd_generator.py14
-rw-r--r--scripts/object_tracker_generator.py14
-rw-r--r--scripts/parameter_validation_generator.py24
-rw-r--r--scripts/threading_generator.py14
-rw-r--r--scripts/unique_objects_generator.py14
8 files changed, 58 insertions, 49 deletions
diff --git a/scripts/dispatch_table_helper_generator.py b/scripts/dispatch_table_helper_generator.py
index ad8e2b53..6e210452 100644
--- a/scripts/dispatch_table_helper_generator.py
+++ b/scripts/dispatch_table_helper_generator.py
@@ -135,8 +135,8 @@ class DispatchTableHelperOutputGenerator(OutputGenerator):
#
# Process commands, adding to appropriate dispatch tables
- def genCmd(self, cmdinfo, name):
- OutputGenerator.genCmd(self, cmdinfo, name)
+ def genCmd(self, cmdinfo, name, alias):
+ OutputGenerator.genCmd(self, cmdinfo, name, alias)
avoid_entries = ['vkCreateInstance',
'vkCreateDevice']
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py
index e460f964..2cbcf8e2 100644
--- a/scripts/helper_file_generator.py
+++ b/scripts/helper_file_generator.py
@@ -177,19 +177,22 @@ class HelperFileOutputGenerator(OutputGenerator):
OutputGenerator.endFeature(self)
#
# Grab group (e.g. C "enum" type) info to output for enum-string conversion helper
- def genGroup(self, groupinfo, groupName):
- OutputGenerator.genGroup(self, groupinfo, groupName)
+ def genGroup(self, groupinfo, groupName, alias):
+ OutputGenerator.genGroup(self, groupinfo, groupName, alias)
groupElem = groupinfo.elem
# For enum_string_header
if self.helper_file_type == 'enum_string_header':
value_list = []
for elem in groupElem.findall('enum'):
- if elem.get('supported') != 'disabled':
+ if elem.get('supported') != 'disabled' and elem.get('alias') == None:
item_name = elem.get('name')
# Avoid duplicates
if item_name not in value_list:
value_list.append(item_name)
if value_list is not None:
+ #if alias:
+ # self.enum_output += self.GenerateEnumStringConversion(alias, value_list)
+ #else:
self.enum_output += self.GenerateEnumStringConversion(groupName, value_list)
elif self.helper_file_type == 'object_types_header':
if groupName == 'VkDebugReportObjectTypeEXT':
@@ -205,8 +208,8 @@ class HelperFileOutputGenerator(OutputGenerator):
#
# Called for each type -- if the type is a struct/union, grab the metadata
- def genType(self, typeinfo, name):
- OutputGenerator.genType(self, typeinfo, name)
+ def genType(self, typeinfo, name, alias):
+ OutputGenerator.genType(self, typeinfo, name, alias)
typeElem = typeinfo.elem
# If the type is a struct type, traverse the imbedded <member> tags generating a structure.
# Otherwise, emit the tag text.
@@ -215,7 +218,7 @@ class HelperFileOutputGenerator(OutputGenerator):
self.object_types.append(name)
elif (category == 'struct' or category == 'union'):
self.structNames.append(name)
- self.genStruct(typeinfo, name)
+ self.genStruct(typeinfo, name, alias)
#
# Generate a VkStructureType based on a structure typename
def genVkStructureType(self, typename):
@@ -319,8 +322,8 @@ class HelperFileOutputGenerator(OutputGenerator):
return False
#
# Generate local ready-access data describing Vulkan structures and unions from the XML metadata
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
members = typeinfo.elem.findall('.//member')
# Iterate over members once to get length parameters for arrays
lens = set()
diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py
index ae2b3dac..0ad061b0 100644
--- a/scripts/loader_extension_generator.py
+++ b/scripts/loader_extension_generator.py
@@ -251,8 +251,8 @@ class LoaderExtensionOutputGenerator(OutputGenerator):
#
# Process commands, adding to appropriate dispatch tables
- def genCmd(self, cmdinfo, name):
- OutputGenerator.genCmd(self, cmdinfo, name)
+ def genCmd(self, cmdinfo, name, alias):
+ OutputGenerator.genCmd(self, cmdinfo, name, alias)
# Get first param type
params = cmdinfo.elem.findall('param')
diff --git a/scripts/mock_icd_generator.py b/scripts/mock_icd_generator.py
index ccbaf151..43771e9b 100644
--- a/scripts/mock_icd_generator.py
+++ b/scripts/mock_icd_generator.py
@@ -934,7 +934,7 @@ class MockICDOutputGenerator(OutputGenerator):
self.sections[section].append(text)
#
# Type generation
- def genType(self, typeinfo, name):
+ def genType(self, typeinfo, name, alias):
pass
#
# Struct (e.g. C "struct" type) generation.
@@ -944,8 +944,8 @@ class MockICDOutputGenerator(OutputGenerator):
# tags - they are a declaration of a struct or union member.
# Only simple member declarations are supported (no nested
# structs etc.)
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
body = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n'
# paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam)
for member in typeinfo.elem.findall('.//member'):
@@ -956,16 +956,16 @@ class MockICDOutputGenerator(OutputGenerator):
#
# Group (e.g. C "enum" type) generation.
# These are concatenated together with other types.
- def genGroup(self, groupinfo, groupName):
+ def genGroup(self, groupinfo, groupName, alias):
pass
# Enumerant generation
# <enum> tags may specify their values in several ways, but are usually
# just integers.
- def genEnum(self, enuminfo, name):
+ def genEnum(self, enuminfo, name, alias):
pass
#
# Command generation
- def genCmd(self, cmdinfo, name):
+ def genCmd(self, cmdinfo, name, alias):
decls = self.makeCDecls(cmdinfo.elem)
if self.header: # In the header declare all intercepts
self.appendSection('command', '')
@@ -1010,7 +1010,7 @@ class MockICDOutputGenerator(OutputGenerator):
if (self.featureExtraProtect != None):
self.intercepts += [ '#endif' ]
- OutputGenerator.genCmd(self, cmdinfo, name)
+ OutputGenerator.genCmd(self, cmdinfo, name, alias)
#
self.appendSection('command', '')
self.appendSection('command', 'static %s' % (decls[0][:-1]))
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index 26c1105a..0d922051 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -451,14 +451,14 @@ class ObjectTrackerOutputGenerator(OutputGenerator):
OutputGenerator.endFeature(self)
#
# Process enums, structs, etc.
- def genType(self, typeinfo, name):
- OutputGenerator.genType(self, typeinfo, name)
+ def genType(self, typeinfo, name, alias):
+ OutputGenerator.genType(self, typeinfo, name, alias)
typeElem = typeinfo.elem
# If the type is a struct type, traverse the imbedded <member> tags generating a structure.
# Otherwise, emit the tag text.
category = typeElem.get('category')
if (category == 'struct' or category == 'union'):
- self.genStruct(typeinfo, name)
+ self.genStruct(typeinfo, name, alias)
if category == 'handle':
self.object_types.append(name)
#
@@ -539,8 +539,8 @@ class ObjectTrackerOutputGenerator(OutputGenerator):
# <member> tags instead of freeform C type declarations. The <member> tags are just like
# <param> tags - they are a declaration of a struct or union member. Only simple member
# declarations are supported (no nested structs etc.)
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
members = typeinfo.elem.findall('.//member')
# Iterate over members once to get length parameters for arrays
lens = set()
@@ -839,10 +839,10 @@ class ObjectTrackerOutputGenerator(OutputGenerator):
return paramdecl, param_pre_code, param_post_code
#
# Capture command parameter info needed to create, destroy, and validate objects
- def genCmd(self, cmdinfo, cmdname):
+ def genCmd(self, cmdinfo, cmdname, alias):
# Add struct-member type information to command parameter information
- OutputGenerator.genCmd(self, cmdinfo, cmdname)
+ OutputGenerator.genCmd(self, cmdinfo, cmdname, alias)
members = cmdinfo.elem.findall('.//param')
# Iterate over members once to get length parameters for arrays
lens = set()
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py
index 4246eeae..66662086 100644
--- a/scripts/parameter_validation_generator.py
+++ b/scripts/parameter_validation_generator.py
@@ -410,14 +410,14 @@ class ParameterValidationOutputGenerator(OutputGenerator):
OutputGenerator.endFeature(self)
#
# Type generation
- def genType(self, typeinfo, name):
- OutputGenerator.genType(self, typeinfo, name)
+ def genType(self, typeinfo, name, alias):
+ OutputGenerator.genType(self, typeinfo, name, alias)
typeElem = typeinfo.elem
# If the type is a struct type, traverse the imbedded <member> tags generating a structure. Otherwise, emit the tag text.
category = typeElem.get('category')
if (category == 'struct' or category == 'union'):
self.structNames.append(name)
- self.genStruct(typeinfo, name)
+ self.genStruct(typeinfo, name, alias)
elif (category == 'handle'):
self.handleTypes.add(name)
elif (category == 'bitmask'):
@@ -432,8 +432,10 @@ class ParameterValidationOutputGenerator(OutputGenerator):
# This is a special case of the <type> tag where the contents are interpreted as a set of <member> tags instead of freeform C
# type declarations. The <member> tags are just like <param> tags - they are a declaration of a struct or union member.
# Only simple member declarations are supported (no nested structs etc.)
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ if alias:
+ print("genStruct {} {}".format(typeName, alias))
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
conditions = self.structMemberValidationConditions[typeName] if typeName in self.structMemberValidationConditions else None
members = typeinfo.elem.findall('.//member')
#
@@ -497,8 +499,10 @@ class ParameterValidationOutputGenerator(OutputGenerator):
#
# Capture group (e.g. C "enum" type) info to be used for param check code generation.
# These are concatenated together with other types.
- def genGroup(self, groupinfo, groupName):
- OutputGenerator.genGroup(self, groupinfo, groupName)
+ def genGroup(self, groupinfo, groupName, alias):
+ if alias:
+ print("genGroup {} {}".format(groupName, alias))
+ OutputGenerator.genGroup(self, groupinfo, groupName, alias)
groupElem = groupinfo.elem
# Store the sType values
if groupName == 'VkStructureType':
@@ -533,8 +537,10 @@ class ParameterValidationOutputGenerator(OutputGenerator):
self.enumValueLists += enum_entry
#
# Capture command parameter info to be used for param check code generation.
- def genCmd(self, cmdinfo, name):
- OutputGenerator.genCmd(self, cmdinfo, name)
+ def genCmd(self, cmdinfo, name, alias):
+ if alias:
+ print("genCmd {} {}".format(name, alias))
+ OutputGenerator.genCmd(self, cmdinfo, name, alias)
decls = self.makeCDecls(cmdinfo.elem)
typedef = decls[1]
typedef = typedef.split(')',1)[1]
diff --git a/scripts/threading_generator.py b/scripts/threading_generator.py
index 4ac65d67..5cfb4d7b 100644
--- a/scripts/threading_generator.py
+++ b/scripts/threading_generator.py
@@ -334,7 +334,7 @@ class ThreadOutputGenerator(OutputGenerator):
self.sections[section].append(text)
#
# Type generation
- def genType(self, typeinfo, name):
+ def genType(self, typeinfo, name, alias):
pass
#
# Struct (e.g. C "struct" type) generation.
@@ -344,8 +344,8 @@ class ThreadOutputGenerator(OutputGenerator):
# tags - they are a declaration of a struct or union member.
# Only simple member declarations are supported (no nested
# structs etc.)
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
body = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n'
# paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam)
for member in typeinfo.elem.findall('.//member'):
@@ -356,16 +356,16 @@ class ThreadOutputGenerator(OutputGenerator):
#
# Group (e.g. C "enum" type) generation.
# These are concatenated together with other types.
- def genGroup(self, groupinfo, groupName):
+ def genGroup(self, groupinfo, groupName, alias):
pass
# Enumerant generation
# <enum> tags may specify their values in several ways, but are usually
# just integers.
- def genEnum(self, enuminfo, name):
+ def genEnum(self, enuminfo, name, alias):
pass
#
# Command generation
- def genCmd(self, cmdinfo, name):
+ def genCmd(self, cmdinfo, name, alias):
# Commands shadowed by interface functions and are not implemented
special_functions = [
'vkGetDeviceProcAddr',
@@ -409,7 +409,7 @@ class ThreadOutputGenerator(OutputGenerator):
if (self.featureExtraProtect != None):
self.intercepts += [ '#endif' ]
- OutputGenerator.genCmd(self, cmdinfo, name)
+ OutputGenerator.genCmd(self, cmdinfo, name, alias)
#
decls = self.makeCDecls(cmdinfo.elem)
self.appendSection('command', '')
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index 289a5bbe..b8f5cbc0 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -285,14 +285,14 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
# Finish processing in superclass
OutputGenerator.endFeature(self)
#
- def genType(self, typeinfo, name):
- OutputGenerator.genType(self, typeinfo, name)
+ def genType(self, typeinfo, name, alias):
+ OutputGenerator.genType(self, typeinfo, name, alias)
typeElem = typeinfo.elem
# If the type is a struct type, traverse the imbedded <member> tags generating a structure.
# Otherwise, emit the tag text.
category = typeElem.get('category')
if (category == 'struct' or category == 'union'):
- self.genStruct(typeinfo, name)
+ self.genStruct(typeinfo, name, alias)
#
# Append a definition to the specified section
def appendSection(self, section, text):
@@ -363,8 +363,8 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
# <member> tags instead of freeform C type declarations. The <member> tags are just like
# <param> tags - they are a declaration of a struct or union member. Only simple member
# declarations are supported (no nested structs etc.)
- def genStruct(self, typeinfo, typeName):
- OutputGenerator.genStruct(self, typeinfo, typeName)
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
members = typeinfo.elem.findall('.//member')
# Iterate over members once to get length parameters for arrays
lens = set()
@@ -776,10 +776,10 @@ class UniqueObjectsOutputGenerator(OutputGenerator):
return paramdecl, param_pre_code, param_post_code
#
# Capture command parameter info needed to wrap NDOs as well as handling some boilerplate code
- def genCmd(self, cmdinfo, cmdname):
+ def genCmd(self, cmdinfo, cmdname, alias):
# Add struct-member type information to command parameter information
- OutputGenerator.genCmd(self, cmdinfo, cmdname)
+ OutputGenerator.genCmd(self, cmdinfo, cmdname, alias)
members = cmdinfo.elem.findall('.//param')
# Iterate over members once to get length parameters for arrays
lens = set()