aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Lohrmann <peterl@valvesoftware.com>2015-04-03 11:43:06 -0700
committerPeter Lohrmann <peterl@valvesoftware.com>2015-04-03 11:43:06 -0700
commit9dc2dc3b0bf857ad7d3fb04979de0426781127db (patch)
treef8563df56fb091de4533d81e023854a2c9f001d6
parentec6eec06c41d790957dc279f02f9288b45dc4410 (diff)
downloadusermoji-9dc2dc3b0bf857ad7d3fb04979de0426781127db.tar.xz
layers: update codegen to split struct_size_helper into .h and .c files.
* Also added a copyright notice to all the generated files. * Splitting the definition from the declaration was needed to better utilize these helpers in glave.
-rw-r--r--layers/CMakeLists.txt4
-rwxr-xr-xxgl_helper.py61
2 files changed, 59 insertions, 6 deletions
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
index 19b13e25..4ac923c1 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
@@ -66,6 +66,7 @@ run_xgl_helper(gen_struct_wrappers
xgl_struct_string_helper_no_addr.h
xgl_struct_string_helper_no_addr_cpp.h
xgl_struct_size_helper.h
+ xgl_struct_size_helper.c
xgl_struct_wrappers.h
xgl_struct_wrappers.cpp
)
@@ -80,7 +81,8 @@ add_custom_target(generate_xgl_layer_helpers DEPENDS
xgl_struct_string_helper_cpp.h
xgl_struct_string_helper_no_addr_cpp.h
xgl_struct_size_helper.h
- xgl_struct_wrappers.h
+ xgl_struct_size_helper.c
+ xgl_struct_wrappers.h
xgl_struct_wrappers.cpp
xgl_struct_graphviz_helper.h
)
diff --git a/xgl_helper.py b/xgl_helper.py
index 9443c0f1..14f19023 100755
--- a/xgl_helper.py
+++ b/xgl_helper.py
@@ -356,7 +356,9 @@ class StructWrapperGen:
self.shcppg = CommonFileGen(self.string_helper_cpp_filename)
self.vhg = CommonFileGen(self.validate_helper_filename)
self.size_helper_filename = os.path.join(out_dir, self.api+"_struct_size_helper.h")
+ self.size_helper_c_filename = os.path.join(out_dir, self.api+"_struct_size_helper.c")
self.size_helper_gen = CommonFileGen(self.size_helper_filename)
+ self.size_helper_c_gen = CommonFileGen(self.size_helper_c_filename)
#print(self.header_filename)
self.header_txt = ""
self.definition_txt = ""
@@ -428,8 +430,42 @@ class StructWrapperGen:
self.size_helper_gen.setBody(self._generateSizeHelperFunctions())
self.size_helper_gen.generate()
+ def generateSizeHelperC(self):
+ print("Generating struct size helper c")
+ self.size_helper_c_gen.setCopyright(self._generateCopyright())
+ self.size_helper_c_gen.setHeader(self._generateSizeHelperHeaderC())
+ self.size_helper_c_gen.setBody(self._generateSizeHelperFunctionsC())
+ self.size_helper_c_gen.generate()
+
def _generateCopyright(self):
- return "//This is the copyright\n"
+ copyright = []
+ copyright.append('/* THIS FILE IS GENERATED. DO NOT EDIT. */');
+ copyright.append('');
+ copyright.append('/*');
+ copyright.append(' * XGL');
+ copyright.append(' *');
+ copyright.append(' * Copyright (C) 2014 LunarG, Inc.');
+ copyright.append(' *');
+ copyright.append(' * Permission is hereby granted, free of charge, to any person obtaining a');
+ copyright.append(' * copy of this software and associated documentation files (the "Software"),');
+ copyright.append(' * to deal in the Software without restriction, including without limitation');
+ copyright.append(' * the rights to use, copy, modify, merge, publish, distribute, sublicense,');
+ copyright.append(' * and/or sell copies of the Software, and to permit persons to whom the');
+ copyright.append(' * Software is furnished to do so, subject to the following conditions:');
+ copyright.append(' *');
+ copyright.append(' * The above copyright notice and this permission notice shall be included');
+ copyright.append(' * in all copies or substantial portions of the Software.');
+ copyright.append(' *');
+ copyright.append(' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR');
+ copyright.append(' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,');
+ copyright.append(' * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL');
+ copyright.append(' * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER');
+ copyright.append(' * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING');
+ copyright.append(' * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER');
+ copyright.append(' * DEALINGS IN THE SOFTWARE.');
+ copyright.append(' */');
+ copyright.append('');
+ return "\n".join(copyright)
def _generateCppHeader(self):
header = []
@@ -978,12 +1014,17 @@ class StructWrapperGen:
def _generateSizeHelperFunctions(self):
sh_funcs = []
- # We do two passes, first pass just generates prototypes for all the functsions
+ # just generates prototypes for all the functions
for s in sorted(self.struct_dict):
sh_funcs.append('size_t %s(const %s* pStruct);' % (self._get_size_helper_func_name(s), typedef_fwd_dict[s]))
- sh_funcs.append('\n')
+ return "\n".join(sh_funcs)
+
+
+ def _generateSizeHelperFunctionsC(self):
+ sh_funcs = []
+ # generate function definitions
for s in sorted(self.struct_dict):
- skip_list = [] # Used when struct elements need to be skipped b/c size already accounted for
+ skip_list = [] # Used when struct elements need to be skipped b/c size already accounted for
sh_funcs.append('size_t %s(const %s* pStruct)\n{' % (self._get_size_helper_func_name(s), typedef_fwd_dict[s]))
indent = ' '
sh_funcs.append('%ssize_t structSize = 0;' % (indent))
@@ -1089,6 +1130,15 @@ class StructWrapperGen:
header.append("size_t get_dynamic_struct_size(const void* pStruct);\n")
return "".join(header)
+ def _generateSizeHelperHeaderC(self):
+ header = []
+ header.append('#include "xgl_struct_size_helper.h"')
+ header.append('#include <string.h>')
+ header.append('#include <assert.h>')
+ header.append('\n// Function definitions\n')
+ return "\n".join(header)
+
+
def _generateHeader(self):
header = []
header.append("//#includes, #defines, globals and such...\n")
@@ -1547,8 +1597,9 @@ def main(argv=None):
sw.generateStringHelperCpp()
sw.set_no_addr(False)
sw.generateStringHelperCpp()
- sw.set_include_headers(["stdio.h", "stdlib.h"])
+ sw.set_include_headers(["stdio.h", "stdlib.h", "xgl.h"])
sw.generateSizeHelper()
+ sw.generateSizeHelperC()
if opts.gen_cmake:
cmg = CMakeGen(sw, os.path.dirname(enum_sh_filename))
cmg.generate()