mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 21:51:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| ## ======================================================================== ##
 | |
| ## Copyright 2009-2019 Intel Corporation                                    ##
 | |
| ##                                                                          ##
 | |
| ## Licensed under the Apache License, Version 2.0 (the "License");          ##
 | |
| ## you may not use this file except in compliance with the License.         ##
 | |
| ## You may obtain a copy of the License at                                  ##
 | |
| ##                                                                          ##
 | |
| ##     http://www.apache.org/licenses/LICENSE-2.0                           ##
 | |
| ##                                                                          ##
 | |
| ## Unless required by applicable law or agreed to in writing, software      ##
 | |
| ## distributed under the License is distributed on an "AS IS" BASIS,        ##
 | |
| ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ##
 | |
| ## See the License for the specific language governing permissions and      ##
 | |
| ## limitations under the License.                                           ##
 | |
| ## ======================================================================== ##
 | |
| 
 | |
| import os
 | |
| from array import array
 | |
| 
 | |
| 
 | |
| # Generates a C++ file from the specified binary resource file
 | |
| def generate(in_path, out_path):
 | |
|     namespace = "oidn::weights"
 | |
|     scopes = namespace.split("::")
 | |
| 
 | |
|     file_name = os.path.basename(in_path)
 | |
|     var_name = os.path.splitext(file_name)[0]
 | |
| 
 | |
|     with open(in_path, "rb") as in_file, open(out_path, "w") as out_file:
 | |
|         # Header
 | |
|         out_file.write("// Generated from: %s\n" % file_name)
 | |
|         out_file.write("#include <cstddef>\n\n")
 | |
| 
 | |
|         # Open the namespaces
 | |
|         for s in scopes:
 | |
|             out_file.write("namespace %s {\n" % s)
 | |
|         if scopes:
 | |
|             out_file.write("\n")
 | |
| 
 | |
|         # Read the file
 | |
|         in_data = array("B", in_file.read())
 | |
| 
 | |
|         # Write the size
 | |
|         out_file.write("//const size_t %s_size = %d;\n\n" % (var_name, len(in_data)))
 | |
| 
 | |
|         # Write the data
 | |
|         out_file.write("unsigned char %s[] = {" % var_name)
 | |
|         for i in range(len(in_data)):
 | |
|             c = in_data[i]
 | |
|             if i > 0:
 | |
|                 out_file.write(",")
 | |
|             if (i + 1) % 20 == 1:
 | |
|                 out_file.write("\n")
 | |
|             out_file.write("%d" % c)
 | |
|         out_file.write("\n};\n")
 | |
| 
 | |
|         # Close the namespaces
 | |
|         if scopes:
 | |
|             out_file.write("\n")
 | |
|         for scope in reversed(scopes):
 | |
|             out_file.write("} // namespace %s\n" % scope)
 | |
| 
 | |
| 
 | |
| def tza_to_cpp(target, source, env):
 | |
|     for x in zip(source, target):
 | |
|         generate(str(x[0]), str(x[1]))
 | 
