in src/bindgen/mangle.rs [87:140]
fn append_mangled_type(&mut self, ty: &Type, last: bool) {
match *ty {
Type::Path(ref generic) => {
let sub_path =
Mangler::new(generic.export_name(), generic.generics(), last, self.config)
.mangle();
self.output.push_str(
&self
.config
.rename_types
.apply(&sub_path, IdentifierType::Type),
);
}
Type::Primitive(ref primitive) => {
self.output.push_str(
&self
.config
.rename_types
.apply(primitive.to_repr_rust(), IdentifierType::Type),
);
}
Type::Ptr {
ref ty, is_const, ..
} => {
self.push(if is_const {
Separator::BeginConstPtr
} else {
Separator::BeginMutPtr
});
self.append_mangled_type(ty, last);
}
Type::FuncPtr {
ref ret, ref args, ..
} => {
self.push(Separator::BeginFn);
self.append_mangled_type(ret, args.is_empty());
for (i, arg) in args.iter().enumerate() {
self.push(Separator::BetweenFnArg);
let last = last && i == args.len() - 1;
self.append_mangled_type(&arg.1, last);
}
if !self.last {
self.push(Separator::EndFn);
}
}
Type::Array(ref ty, ref len) => {
self.push(Separator::BeginArray);
self.append_mangled_type(ty, false);
self.push(Separator::BetweenArray);
self.append_mangled_argument(&GenericArgument::Const(len.clone()), last);
}
}
}