scripts: Add gen for struct_size_helper source file
First level code-gen, move some code into functions.
Change-Id: Idf8ee44a1f74c4117aed74b8df5b548df618e790
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py
index 59c96e0..a6cf81d 100644
--- a/scripts/helper_file_generator.py
+++ b/scripts/helper_file_generator.py
@@ -267,6 +267,19 @@
outstring += '}\n'
return outstring
#
+ # Combine enum string helper header file preamble with body text and return
+ def GenerateEnumStringHelperHeader(self):
+ enum_string_helper_header = '\n'
+ enum_string_helper_header += '#pragma once\n'
+ enum_string_helper_header += '#ifdef _WIN32\n'
+ enum_string_helper_header += '#pragma warning( disable : 4065 )\n'
+ enum_string_helper_header += '#endif\n'
+ enum_string_helper_header += '\n'
+ enum_string_helper_header += '#include <vulkan/vulkan.h>\n'
+ enum_string_helper_header += '\n'
+ enum_string_helper_header += self.enum_output
+ return enum_string_helper_header
+ #
# struct_size_header: build function prototypes for header file
def GenerateStructSizeHeader(self):
outstring = ''
@@ -283,35 +296,68 @@
outstring += '#endif'
return outstring
#
+ # Combine struct size helper header file preamble with body text and return
+ def GenerateStructSizeHelperHeader(self):
+ struct_size_helper_header = '\n'
+ struct_size_helper_header += '#ifdef __cplusplus\n'
+ struct_size_helper_header += 'extern "C" {\n'
+ struct_size_helper_header += '#endif\n'
+ struct_size_helper_header += '\n'
+ struct_size_helper_header += '#include <stdio.h>\n'
+ struct_size_helper_header += '#include <stdlib.h>\n'
+ struct_size_helper_header += '#include <vulkan/vulkan.h>\n'
+ struct_size_helper_header += '\n'
+ struct_size_helper_header += '// Function Prototypes\n'
+ struct_size_helper_header += self.GenerateStructSizeHeader()
+ return struct_size_helper_header
+
+ #
+ # struct_size_helper source -- create bodies of struct size helper functions
+ def GenerateStructSizeSource(self):
+ outstring = ''
+ for item in self.structMembers:
+
+ if item.name == 'VkBindSparseInfo':
+ stop = 'here'
+
+ lower_case_name = item.name.lower()
+ if item.ifdef_protect != None:
+ outstring += '#ifdef %s\n' % item.ifdef_protect
+ outstring += 'size_t vk_size_%s(const %s* struct_ptr) {\n' % (item.name.lower(), item.name)
+ outstring += ' size_t struct_size = 0;\n'
+ outstring += ' if (struct_ptr) {\n'
+ outstring += ' struct_size = sizeof(%s);\n' % item.name
+ outstring += ' }\n'
+ outstring += ' return struct_size\n'
+ outstring += '}\n'
+ if item.ifdef_protect != None:
+ outstring += '#endif // %s\n' % item.ifdef_protect
+ outstring += '#ifdef __cplusplus\n'
+ outstring += '}\n'
+ outstring += '#endif'
+ return outstring
+ #
+ # Combine struct size helper source file preamble with body text and return
+ def GenerateStructSizeHelperSource(self):
+ struct_size_helper_source = '\n'
+ struct_size_helper_source += '#include "vk_struct_size_helper.h"\n'
+ struct_size_helper_source += '#include <string.h>\n'
+ struct_size_helper_source += '#include <assert.h>\n'
+ struct_size_helper_source += '\n'
+ struct_size_helper_source += '// Function Definitions\n'
+ struct_size_helper_source += self.GenerateStructSizeSource()
+ return struct_size_helper_source
+
+
+
+
+ #
# Create a helper file and return it as a string
def OutputDestFile(self):
out_file_entries = ''
if self.helper_file_type == 'enum_string_header':
- out_file_entries = '\n'
- out_file_entries += '#pragma once\n'
- out_file_entries += '#ifdef _WIN32\n'
- out_file_entries += '#pragma warning( disable : 4065 )\n'
- out_file_entries += '#endif\n'
- out_file_entries += '\n'
- out_file_entries += '#include <vulkan/vulkan.h>\n'
- out_file_entries += '\n'
- out_file_entries += self.enum_output
+ return self.GenerateEnumStringHelperHeader()
elif self.helper_file_type == 'struct_size_header':
- out_file_entries = '\n'
- out_file_entries += '#ifdef __cplusplus\n'
- out_file_entries += 'extern "C" {\n'
- out_file_entries += '#endif\n'
- out_file_entries += '\n'
- out_file_entries += '#include <stdio.h>\n'
- out_file_entries += '#include <stdlib.h>\n'
- out_file_entries += '#include <vulkan/vulkan.h>\n'
- out_file_entries += '\n'
- out_file_entries += '// Function Prototypes\n'
- out_file_entries += self.GenerateStructSizeHeader()
+ return self.GenerateStructSizeHelperHeader()
elif self.helper_file_type == 'struct_size_source':
- out_file_entries = '\n'
- out_file_entries += 'Helper File source code\n'
- out_file_entries += '\n'
- out_file_entries += 'helper file.c \n'
- out_file_entries += '\n'
- return out_file_entries
+ return self.GenerateStructSizeHelperSource()