summaryrefslogtreecommitdiff
path: root/libbindgen/src/codegen/mod.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-22 20:01:29 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-11-22 20:01:29 +0100
commit1cdec58024f260cfe92917aef783145b528663c6 (patch)
treee0b8e4b4d835272008a7bfcedeba3a74c2bc3cdb /libbindgen/src/codegen/mod.rs
parent2fa8409d1652b5f81c01d8ccb53bc30202249d95 (diff)
ir: Rework how we discover children of modules.
Diffstat (limited to 'libbindgen/src/codegen/mod.rs')
-rw-r--r--libbindgen/src/codegen/mod.rs13
1 files changed, 4 insertions, 9 deletions
diff --git a/libbindgen/src/codegen/mod.rs b/libbindgen/src/codegen/mod.rs
index ba52fa83..ad9ac2de 100644
--- a/libbindgen/src/codegen/mod.rs
+++ b/libbindgen/src/codegen/mod.rs
@@ -270,16 +270,11 @@ impl CodeGenerator for Module {
debug!("<Module as CodeGenerator>::codegen: item = {:?}", item);
let codegen_self = |result: &mut CodegenResult, found_any: &mut bool| {
- // FIXME: This could be less expensive, I guess.
- for &whitelisted_item in whitelisted_items {
- if whitelisted_item == item.id() {
- continue;
- }
-
- let child = ctx.resolve_item(whitelisted_item);
- if child.parent_id() == item.id() {
+ for child in self.children() {
+ if whitelisted_items.contains(child) {
*found_any = true;
- child.codegen(ctx, result, whitelisted_items, &());
+ ctx.resolve_item(*child)
+ .codegen(ctx, result, whitelisted_items, &());
}
}
};