fn load_syn_foreign_mod()

in src/bindgen/parser.rs [604:653]


    fn load_syn_foreign_mod(
        &mut self,
        config: &Config,
        binding_crate_name: &str,
        crate_name: &str,
        mod_cfg: Option<&Cfg>,
        item: &syn::ItemForeignMod,
    ) {
        if !item.abi.is_c() && !item.abi.is_omitted() {
            info!("Skip {} - (extern block must be extern C).", crate_name);
            return;
        }

        let mod_cfg = Cfg::append(mod_cfg, Cfg::load(&item.attrs));
        for foreign_item in &item.items {
            if let syn::ForeignItem::Fn(ref function) = *foreign_item {
                if !config
                    .parse
                    .should_generate_top_level_item(crate_name, binding_crate_name)
                {
                    info!(
                        "Skip {}::{} - (fn's outside of the binding crate are not used).",
                        crate_name, &function.sig.ident
                    );
                    return;
                }
                let path = Path::new(function.sig.ident.unraw().to_string());
                match Function::load(
                    path,
                    None,
                    &function.sig,
                    true,
                    &function.attrs,
                    mod_cfg.as_ref(),
                ) {
                    Ok(func) => {
                        info!("Take {}::{}.", crate_name, &function.sig.ident);

                        self.functions.push(func);
                    }
                    Err(msg) => {
                        error!(
                            "Cannot use fn {}::{} ({}).",
                            crate_name, &function.sig.ident, msg
                        );
                    }
                }
            }
        }
    }