diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-08-18 23:40:00 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-18 23:40:00 -0500 |
commit | 2d943478573dc85dddb232cf0e82908a5a4c00ea (patch) | |
tree | 7fa6ccc5b0afb05e1879f234451f95257541ad09 | |
parent | f64606fbddecefe681ac2d29a1bb5253d50befbf (diff) | |
parent | 5c67b7df6eadc3d324ac48c581a35d5b71d29849 (diff) |
Auto merge of #34 - upsuper:blacklist-typedef, r=emilio
Allow blacklist typedef
This allows making type aliases to be blacklisted.
-rw-r--r-- | src/gen.rs | 4 | ||||
-rw-r--r-- | src/parser.rs | 2 | ||||
-rw-r--r-- | src/types.rs | 2 |
3 files changed, 8 insertions, 0 deletions
@@ -770,6 +770,10 @@ fn ctypedef_to_rs(ctx: &mut GenCtx, ty: TypeInfo) -> Vec<P<ast::Item>> { .type_(&rust_name).build_ty(P(rust_ty)) } + if ty.hide { + return vec![]; + } + if ty.opaque { return mk_opaque_struct(ctx, &ty.name, &ty.layout); } diff --git a/src/parser.rs b/src/parser.rs index 49d62b81..68578723 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -211,8 +211,10 @@ fn decl_name(ctx: &mut ClangParserCtx, cursor: &Cursor) -> Global { } CXCursor_TypeAliasDecl | CXCursor_TypedefDecl => { let opaque = ctx.options.opaque_types.iter().any(|name| *name == spelling); + let hide = ctx.options.blacklist_type.iter().any(|name| *name == spelling); let mut ti = TypeInfo::new(spelling, ctx.current_module_id, TVoid, layout); ti.opaque = opaque; + ti.hide = hide; let ti = Rc::new(RefCell::new(ti)); GType(ti) diff --git a/src/types.rs b/src/types.rs index 9eaa3eb8..60af3f59 100644 --- a/src/types.rs +++ b/src/types.rs @@ -821,6 +821,7 @@ pub struct TypeInfo { // TODO: Is this really useful? // You can just make opaque the underlying type pub opaque: bool, + pub hide: bool, } impl TypeInfo { @@ -832,6 +833,7 @@ impl TypeInfo { ty: ty, layout: layout, opaque: false, + hide: false, } } } |