diff --git a/src/bin/bindgen.rs b/src/bin/bindgen.rs index 6cd0059bd6..fd0a7ffe2a 100644 --- a/src/bin/bindgen.rs +++ b/src/bin/bindgen.rs @@ -120,6 +120,10 @@ fn parse_args(args: &[String]) -> ParseResult { options.gen_bitfield_methods = false; ix += 1; } + "-no-class-constants" => { + options.class_constants = false; + ix += 1; + } "-dtor-attr" => { if ix + 1 >= args_len { return ParseResult::ParseErr("Missing dtor attr".to_string()); diff --git a/src/lib.rs b/src/lib.rs index a42fa2aeb0..24876cc9ee 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,6 +122,11 @@ impl<'a> Builder<'a> { self } + pub fn disable_class_constants(&mut self) -> &mut Self { + self.options.class_constants = false; + self + } + pub fn generate(&self) -> Result { Bindings::generate(&self.options, self.logger, None) } @@ -152,6 +157,8 @@ pub struct BindgenOptions { pub enable_cxx_namespaces: bool, pub rename_types: bool, pub derive_debug: bool, + /// Wether to generate C++ class constants. + pub class_constants: bool, pub override_enum_ty: String, pub raw_lines: Vec, /// Attributes for a type with destructor @@ -176,6 +183,7 @@ impl Default for BindgenOptions { derive_debug: true, enable_cxx_namespaces: false, override_enum_ty: "".to_string(), + class_constants: true, raw_lines: vec![], dtor_attrs: vec![], clang_args: vec![], @@ -295,6 +303,7 @@ fn parse_headers(options: &BindgenOptions, logger: &Logger) -> Result, pub clang_args: Vec, pub opaque_types: Vec, @@ -990,6 +991,10 @@ fn visit_composite(cursor: &Cursor, parent: &Cursor, ci.has_non_type_template_params = true; } CXCursor_VarDecl => { + if !ctx.options.class_constants { + return CXChildVisit_Continue; + } + let linkage = cursor.linkage(); if linkage != CXLinkage_External && linkage != CXLinkage_UniqueExternal { return CXChildVisit_Continue;