Add --no-cc-enum-traits param Add a `--no-cc-enum-traits` param that can be used to disable the generation of C++ `EnumTrait` structures.
diff --git a/compiler/back_end/cpp/emboss_codegen_cpp.py b/compiler/back_end/cpp/emboss_codegen_cpp.py index ed5e66e..4ac71f0 100644 --- a/compiler/back_end/cpp/emboss_codegen_cpp.py +++ b/compiler/back_end/cpp/emboss_codegen_cpp.py
@@ -45,6 +45,11 @@ choices=["always", "never", "if_tty", "auto"], help="Print error messages using color. 'auto' is a " "synonym for 'if_tty'.") + parser.add_argument("--cc-enum-traits", + action=argparse.BooleanOptionalAction, + default=True, + help="""Controls generation of EnumTraits by the C++ + backend""") return parser.parse_args(argv[1:]) @@ -58,17 +63,18 @@ os.isatty(sys.stderr.fileno()))) print(error.format_errors(errors, source_codes, use_color), file=sys.stderr) -def generate_headers_and_log_errors(ir, color_output): +def generate_headers_and_log_errors(ir, color_output, config: header_generator.Config): """Generates a C++ header and logs any errors. Arguments: ir: EmbossIr of the module. color_output: "always", "never", "if_tty", "auto" + config: Header generation configuration. Returns: A tuple of (header, errors) """ - header, errors = header_generator.generate_header(ir) + header, errors = header_generator.generate_header(ir, config) if errors: _show_errors(errors, ir, color_output) return (header, errors) @@ -79,7 +85,8 @@ ir = ir_pb2.EmbossIr.from_json(f.read()) else: ir = ir_pb2.EmbossIr.from_json(sys.stdin.read()) - header, errors = generate_headers_and_log_errors(ir, flags.color_output) + config = header_generator.Config(include_enum_traits=flags.cc_enum_traits) + header, errors = generate_headers_and_log_errors(ir, flags.color_output, config) if errors: return 1 if flags.output_file:
diff --git a/embossc b/embossc index 0dac79f..7bc0227 100755 --- a/embossc +++ b/embossc
@@ -20,6 +20,7 @@ import os import sys + def _parse_args(argv): parser = argparse.ArgumentParser(description="Emboss compiler") parser.add_argument("--color-output", @@ -49,6 +50,11 @@ nargs=1, help="""File name to be used for the generated output file. Defaults to input_file suffixed by '.h'""") + parser.add_argument("--cc-enum-traits", + action=argparse.BooleanOptionalAction, + default=True, + help="""Controls generation of EnumTraits by the C++ + backend""") parser.add_argument("input_file", type=str, nargs=1, @@ -62,7 +68,7 @@ sys.path.append(base_path) from compiler.back_end.cpp import ( # pylint:disable=import-outside-toplevel - emboss_codegen_cpp + emboss_codegen_cpp, header_generator ) from compiler.front_end import ( # pylint:disable=import-outside-toplevel emboss_front_end @@ -74,8 +80,9 @@ if errors: return 1 + config = header_generator.Config(include_enum_traits=flags.cc_enum_traits) header, errors = emboss_codegen_cpp.generate_headers_and_log_errors( - ir, flags.color_output) + ir, flags.color_output, config) if errors: return 1