in src/bindgen/language_backend/clike.rs [774:838]
fn write_documentation<W: Write>(&mut self, out: &mut SourceWriter<W>, d: &Documentation) {
if d.doc_comment.is_empty() || !self.config.documentation {
return;
}
let end = match self.config.documentation_length {
DocumentationLength::Short => 1,
DocumentationLength::Full => d.doc_comment.len(),
};
let style = match self.config.documentation_style {
DocumentationStyle::Auto if self.config.language == Language::C => {
DocumentationStyle::Doxy
}
DocumentationStyle::Auto if self.config.language == Language::Cxx => {
DocumentationStyle::Cxx
}
DocumentationStyle::Auto => DocumentationStyle::C, // Fallback if `Language` gets extended.
other => other,
};
// Following these documents for style conventions:
// https://en.wikibooks.org/wiki/C++_Programming/Code/Style_Conventions/Comments
// https://www.cs.cmu.edu/~410/doc/doxygen.html
match style {
DocumentationStyle::C => {
out.write("/*");
out.new_line();
}
DocumentationStyle::Doxy => {
out.write("/**");
out.new_line();
}
_ => (),
}
for line in &d.doc_comment[..end] {
match style {
DocumentationStyle::C => out.write(""),
DocumentationStyle::Doxy => out.write(" *"),
DocumentationStyle::C99 => out.write("//"),
DocumentationStyle::Cxx => out.write("///"),
DocumentationStyle::Auto => unreachable!(), // Auto case should always be covered
}
write!(out, "{}", line);
out.new_line();
}
match style {
DocumentationStyle::C => {
out.write(" */");
out.new_line();
}
DocumentationStyle::Doxy => {
out.write(" */");
out.new_line();
}
_ => (),
}
}