Skip to content

Commit 7726d5a

Browse files
author
bors-servo
authored
Auto merge of #2 - servo:class-consts, r=Ms2ger
parser: Disable conditionally class constants Part of the fix for #1
2 parents 08e7fe4 + 33270a9 commit 7726d5a

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/bin/bindgen.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ fn parse_args(args: &[String]) -> ParseResult {
120120
options.gen_bitfield_methods = false;
121121
ix += 1;
122122
}
123+
"-no-class-constants" => {
124+
options.class_constants = false;
125+
ix += 1;
126+
}
123127
"-dtor-attr" => {
124128
if ix + 1 >= args_len {
125129
return ParseResult::ParseErr("Missing dtor attr".to_string());

src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ impl<'a> Builder<'a> {
122122
self
123123
}
124124

125+
pub fn disable_class_constants(&mut self) -> &mut Self {
126+
self.options.class_constants = false;
127+
self
128+
}
129+
125130
pub fn generate(&self) -> Result<Bindings, ()> {
126131
Bindings::generate(&self.options, self.logger, None)
127132
}
@@ -152,6 +157,8 @@ pub struct BindgenOptions {
152157
pub enable_cxx_namespaces: bool,
153158
pub rename_types: bool,
154159
pub derive_debug: bool,
160+
/// Wether to generate C++ class constants.
161+
pub class_constants: bool,
155162
pub override_enum_ty: String,
156163
pub raw_lines: Vec<String>,
157164
/// Attributes for a type with destructor
@@ -176,6 +183,7 @@ impl Default for BindgenOptions {
176183
derive_debug: true,
177184
enable_cxx_namespaces: false,
178185
override_enum_ty: "".to_string(),
186+
class_constants: true,
179187
raw_lines: vec![],
180188
dtor_attrs: vec![],
181189
clang_args: vec![],
@@ -295,6 +303,7 @@ fn parse_headers(options: &BindgenOptions, logger: &Logger) -> Result<ModuleMap,
295303
builtins: options.builtins,
296304
match_pat: options.match_pat.clone(),
297305
emit_ast: options.emit_ast,
306+
class_constants: options.class_constants,
298307
ignore_functions: options.ignore_functions,
299308
fail_on_unknown_type: options.fail_on_unknown_type,
300309
enable_cxx_namespaces: options.enable_cxx_namespaces,

src/parser.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub struct ClangParserOptions {
2525
pub fail_on_unknown_type: bool,
2626
pub ignore_functions: bool,
2727
pub enable_cxx_namespaces: bool,
28+
pub class_constants: bool,
2829
pub override_enum_ty: Option<il::IKind>,
2930
pub clang_args: Vec<String>,
3031
pub opaque_types: Vec<String>,
@@ -990,6 +991,10 @@ fn visit_composite(cursor: &Cursor, parent: &Cursor,
990991
ci.has_non_type_template_params = true;
991992
}
992993
CXCursor_VarDecl => {
994+
if !ctx.options.class_constants {
995+
return CXChildVisit_Continue;
996+
}
997+
993998
let linkage = cursor.linkage();
994999
if linkage != CXLinkage_External && linkage != CXLinkage_UniqueExternal {
9951000
return CXChildVisit_Continue;

0 commit comments

Comments
 (0)