diff options
| author | Mike Schuchardt <mikes@lunarg.com> | 2017-12-28 11:23:48 -0700 |
|---|---|---|
| committer | Mike Schuchardt <mikes@lunarg.com> | 2018-03-09 13:54:31 -0700 |
| commit | 9b3669f17e475f0d713eb8a0ae794d04b3ea63ca (patch) | |
| tree | e0fbf6f681ed2d9767227b39873a0b4cbf74715d /scripts | |
| parent | db1b42a438ee40104034ba3ee613f3799b5fcd07 (diff) | |
| download | usermoji-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.py | 4 | ||||
| -rw-r--r-- | scripts/helper_file_generator.py | 19 | ||||
| -rw-r--r-- | scripts/loader_extension_generator.py | 4 | ||||
| -rw-r--r-- | scripts/mock_icd_generator.py | 14 | ||||
| -rw-r--r-- | scripts/object_tracker_generator.py | 14 | ||||
| -rw-r--r-- | scripts/parameter_validation_generator.py | 24 | ||||
| -rw-r--r-- | scripts/threading_generator.py | 14 | ||||
| -rw-r--r-- | scripts/unique_objects_generator.py | 14 |
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() |
