From fa472299b7ecd19d6ae5029fbe2552263ca243ce Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Wed, 2 Nov 2022 14:51:45 -0500 Subject: [PATCH] Clean the implementation of `Default` for `BindgenOptions` --- bindgen/lib.rs | 171 ++++++++++++++++++++++++++----------------------- 1 file changed, 91 insertions(+), 80 deletions(-) diff --git a/bindgen/lib.rs b/bindgen/lib.rs index 10410734a1..b22a4f669c 100644 --- a/bindgen/lib.rs +++ b/bindgen/lib.rs @@ -2204,103 +2204,114 @@ impl BindgenOptions { impl Default for BindgenOptions { fn default() -> BindgenOptions { + macro_rules! options { + ($($field:ident : $value:expr,)* --default-fields-- $($default_field:ident,)*) => { + BindgenOptions { + $($field: $value,)* + $($default_field: Default::default(),)* + } + }; + } + let rust_target = RustTarget::default(); - BindgenOptions { - rust_target, + options! { + rust_target: rust_target, rust_features: rust_target.into(), - blocklisted_types: Default::default(), - blocklisted_functions: Default::default(), - blocklisted_items: Default::default(), - blocklisted_files: Default::default(), - opaque_types: Default::default(), - rustfmt_path: Default::default(), - depfile: Default::default(), - allowlisted_types: Default::default(), - allowlisted_functions: Default::default(), - allowlisted_vars: Default::default(), - allowlisted_files: Default::default(), - default_enum_style: Default::default(), - bitfield_enums: Default::default(), - newtype_enums: Default::default(), - newtype_global_enums: Default::default(), - rustified_enums: Default::default(), - rustified_non_exhaustive_enums: Default::default(), - constified_enums: Default::default(), - constified_enum_modules: Default::default(), - default_macro_constant_type: Default::default(), - default_alias_style: Default::default(), - type_alias: Default::default(), - new_type_alias: Default::default(), - new_type_alias_deref: Default::default(), - default_non_copy_union_style: Default::default(), - bindgen_wrapper_union: Default::default(), - manually_drop_union: Default::default(), - builtins: false, - emit_ast: false, - emit_ir: false, - emit_ir_graphviz: None, layout_tests: true, - impl_debug: false, - impl_partialeq: false, derive_copy: true, derive_debug: true, - derive_default: false, - derive_hash: false, - derive_partialord: false, - derive_ord: false, - derive_partialeq: false, - derive_eq: false, - enable_cxx_namespaces: false, - enable_function_attribute_detection: false, - disable_name_namespacing: false, - disable_nested_struct_naming: false, - disable_header_comment: false, - use_core: false, - ctypes_prefix: None, anon_fields_prefix: DEFAULT_ANON_FIELDS_PREFIX.into(), convert_floats: true, - raw_lines: vec![], - module_lines: HashMap::default(), - clang_args: vec![], - input_headers: vec![], - input_header_contents: Default::default(), - parse_callbacks: Default::default(), codegen_config: CodegenConfig::all(), - conservative_inline_namespaces: false, generate_comments: true, - generate_inline_functions: false, allowlist_recursively: true, - generate_block: false, - objc_extern_crate: false, - block_extern_crate: false, enable_mangling: true, detect_include_paths: true, - fit_macro_constants: false, prepend_enum_name: true, - time_phases: false, record_matches: true, rustfmt_bindings: true, size_t_is_usize: true, - rustfmt_configuration_file: None, - no_partialeq_types: Default::default(), - no_copy_types: Default::default(), - no_debug_types: Default::default(), - no_default_types: Default::default(), - no_hash_types: Default::default(), - must_use_types: Default::default(), - array_pointers_in_arguments: false, - wasm_import_module_name: None, - dynamic_library_name: None, - dynamic_link_require_all: false, - respect_cxx_access_specs: false, - translate_enum_integer_types: false, - c_naming: false, - force_explicit_padding: false, - vtable_generation: false, - sort_semantically: false, - merge_extern_blocks: false, - abi_overrides: Default::default(), + + --default-fields-- + blocklisted_types, + blocklisted_functions, + blocklisted_items, + blocklisted_files, + opaque_types, + rustfmt_path, + depfile, + allowlisted_types, + allowlisted_functions, + allowlisted_vars, + allowlisted_files, + default_enum_style, + bitfield_enums, + newtype_enums, + newtype_global_enums, + rustified_enums, + rustified_non_exhaustive_enums, + constified_enums, + constified_enum_modules, + default_macro_constant_type, + default_alias_style, + type_alias, + new_type_alias, + new_type_alias_deref, + default_non_copy_union_style, + bindgen_wrapper_union, + manually_drop_union, + builtins, + emit_ast, + emit_ir, + emit_ir_graphviz, + impl_debug, + impl_partialeq, + derive_default, + derive_hash, + derive_partialord, + derive_ord, + derive_partialeq, + derive_eq, + enable_cxx_namespaces, + enable_function_attribute_detection, + disable_name_namespacing, + disable_nested_struct_naming, + disable_header_comment, + use_core, + ctypes_prefix, + raw_lines, + module_lines, + clang_args, + input_headers, + input_header_contents, + parse_callbacks, + conservative_inline_namespaces, + generate_inline_functions, + generate_block, + objc_extern_crate, + block_extern_crate, + fit_macro_constants, + time_phases, + rustfmt_configuration_file, + no_partialeq_types, + no_copy_types, + no_debug_types, + no_default_types, + no_hash_types, + must_use_types, + array_pointers_in_arguments, + wasm_import_module_name, + dynamic_library_name, + dynamic_link_require_all, + respect_cxx_access_specs, + translate_enum_integer_types, + c_naming, + force_explicit_padding, + vtable_generation, + sort_semantically, + merge_extern_blocks, + abi_overrides, } } }