fn write_function_with_layout()

in src/bindgen/language_backend/mod.rs [52:113]


    fn write_function_with_layout<W: Write>(
        &mut self,
        config: &Config,
        out: &mut SourceWriter<W>,
        func: &Function,
        layout: Layout,
    ) {
        let prefix = config.function.prefix(&func.annotations);
        let postfix = config.function.postfix(&func.annotations);

        let condition = func.cfg.to_condition(config);
        condition.write_before(config, out);

        self.write_documentation(out, &func.documentation);

        fn write_space<W: Write>(layout: Layout, out: &mut SourceWriter<W>) {
            if layout == Layout::Vertical {
                out.new_line();
            } else {
                out.write(" ")
            }
        }
        if func.extern_decl {
            out.write("extern ");
        } else {
            if let Some(ref prefix) = prefix {
                write!(out, "{}", prefix);
                write_space(layout, out);
            }
            if func.annotations.must_use(config) {
                if let Some(ref anno) = config.function.must_use {
                    write!(out, "{}", anno);
                    write_space(layout, out);
                }
            }
            if let Some(note) = func
                .annotations
                .deprecated_note(config, DeprecatedNoteKind::Function)
            {
                write!(out, "{}", note);
                write_space(layout, out);
            }
        }
        cdecl::write_func(self, out, func, layout, config);

        if !func.extern_decl {
            if let Some(ref postfix) = postfix {
                write_space(layout, out);
                write!(out, "{}", postfix);
            }
        }

        if let Some(ref swift_name_macro) = config.function.swift_name_macro {
            if let Some(swift_name) = func.swift_name(config) {
                // XXX Should this account for `layout`?
                write!(out, " {}({})", swift_name_macro, swift_name);
            }
        }

        out.write(";");
        condition.write_after(config, out);
    }