12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/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]))
|