summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <me@emiliocobos.me>2016-05-18 09:44:06 +0200
committerEmilio Cobos Álvarez <me@emiliocobos.me>2016-05-18 09:44:06 +0200
commitea14bb1233acbfa65919574e7d61c495ef5fc336 (patch)
tree41e873058c5cf0496eb3bb04b9913fbd6dfed256
parentea7d300c57acbc367cdcd14a715ba1c280dac030 (diff)
gen: Use the topmost template parent with the name for compound decls with args
-rw-r--r--src/gen.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gen.rs b/src/gen.rs
index 9873c24d..6f2d5372 100644
--- a/src/gen.rs
+++ b/src/gen.rs
@@ -384,8 +384,15 @@ fn gen_global(mut ctx: &mut GenCtx,
defs.extend(ctypedef_to_rs(&mut ctx, t).into_iter())
},
GCompDecl(ci) => {
- let c = ci.borrow().clone();
+ let mut c = ci.borrow().clone();
let name = comp_name(&ctx, c.kind, &c.name);
+ // Use the reference template if any
+ while let Some(TComp(ref_template)) = c.ref_template.clone() {
+ if c.name != ref_template.borrow().name {
+ break;
+ }
+ c = ref_template.borrow().clone();
+ }
if !c.args.is_empty() &&
!c.args.iter().any(|a| a.name().map(|name| name.is_empty()).unwrap_or(true)) {
defs.extend(comp_to_rs(&mut ctx, &name, c).into_iter());