def main(args=None): """Main function.""" import logging import sys parser, args = _parse_args(args=args) if not args.i: parser.print_usage() return 0 logging.basicConfig(format="%(filename)s: %(message)s") if args.v > 0: logging.getLogger().setLevel(logging.INFO) if args.ccargs and args.ccargs[0] == "--": clang_args = args.ccargs[1:] else: clang_args = args.ccargs choose_cindex_impl(args.cindex) from cbind.cindex import Diagnostic from cbind.codegen import CodeGen from cbind.ctypes_binding import CtypesBindingGenerator from cbind.macro import MacroGenerator from cbind.source import SyntaxTree CodeGen.ENABLE_CPP = args.enable_cpp CodeGen.ASSERT_LAYOUT = args.assert_layout SyntaxTree.SEVERITY = getattr(Diagnostic, args.severity.capitalize()) cbgen = CtypesBindingGenerator() if args.config: try: import yaml except ImportError: parser.error("could not load Python package yaml") cbgen.config(yaml.load(args.config)) for c_src in args.i: cbgen.parse(c_src, args=clang_args) if args.enable_macro: mcgen = MacroGenerator(macro_int=args.macro_int) for c_src in args.i: mcgen.parse(c_src, args=clang_args) if args.o == "-": output = sys.stdout else: output = open(args.o, "w") with output: cbgen.generate_preamble(parser.prog, args.l, output) cbgen.generate(output) if args.enable_macro: mcgen.generate(output) return 0
def run_test(self, c_code, python_code, macro_int=None, stderr=None): '''Generate Python code from C code and compare it to the answer.''' with os.fdopen(self.header_fd, 'w') as header_file: header_file.write(c_code) mcgen = MacroGenerator(macro_int=macro_int) mcgen.parse(self.header_path, None, stderr=stderr) output = StringIO() mcgen.generate(output) gen_code = output.getvalue() error_message = prepare_error_message(python_code, gen_code) self.assertTrue(compare_codes(gen_code, python_code), error_message)
def main(args=None): '''Main function.''' import logging import sys parser, args = _parse_args(args=args) if not args.i: parser.print_usage() return 0 logging.basicConfig(format='%(filename)s: %(message)s') if args.v > 0: logging.getLogger().setLevel(logging.INFO) if args.ccargs and args.ccargs[0] == '--': clang_args = args.ccargs[1:] else: clang_args = args.ccargs choose_cindex_impl(args.cindex) from cbind.cindex import Diagnostic from cbind.codegen import CodeGen from cbind.ctypes_binding import CtypesBindingGenerator from cbind.macro import MacroGenerator from cbind.source import SyntaxTree CodeGen.ENABLE_CPP = args.enable_cpp CodeGen.ASSERT_LAYOUT = args.assert_layout SyntaxTree.SEVERITY = getattr(Diagnostic, args.severity.capitalize()) cbgen = CtypesBindingGenerator() if args.config: try: import yaml except ImportError: parser.error('could not load Python package yaml') cbgen.config(yaml.load(args.config)) for c_src in args.i: cbgen.parse(c_src, args=clang_args) if args.enable_macro: mcgen = MacroGenerator(macro_int=args.macro_int) for c_src in args.i: mcgen.parse(c_src, args=clang_args) if args.o == '-': output = sys.stdout else: output = open(args.o, 'w') with output: cbgen.generate_preamble(parser.prog, args.l, output) cbgen.generate(output) if args.enable_macro: mcgen.generate(output) return 0