From c221cd2bc58572600b49963999880a070e0d240f Mon Sep 17 00:00:00 2001 From: pixsperdavid Date: Fri, 12 Jan 2024 16:15:01 +0000 Subject: [PATCH] Added ability to specify text to be included in C header files directly after the include guard --- src/headers/_mod.rs | 20 ++++++++++++++++++-- src/headers/templates/c/_prelude.h | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/headers/_mod.rs b/src/headers/_mod.rs index c1f7cc6c9b..e4b2ae55f1 100644 --- a/src/headers/_mod.rs +++ b/src/headers/_mod.rs @@ -129,6 +129,11 @@ match_! {( /// ``` guard: &'__ str, + /// Text included after the include guard of the header file + /// + /// It defaults to an empty string + text_after_guard: &'__ str, + /// Sets up the banner of the generated C header file. /// /// It defaults to: @@ -362,11 +367,13 @@ impl Builder<'_, WhereTo> { let lang = self.language.unwrap_or(Language::C); let guard = self.guard(); + let text_after_guard = self.text_after_guard(); match lang { | Language::C => writeln!(definer.out(), - include_str!("templates/c/_prelude.h"), - guard = guard, + include_str!("templates/c/_prelude.h"), + guard = guard, + text_after_guard = text_after_guard, ), | Language::CSharp => writeln!(definer.out(), @@ -449,6 +456,15 @@ impl Builder<'_, WhereTo> { ) } + fn text_after_guard(&'_ self) + -> String + { + match self.text_after_guard { + None => String::new(), + Some(s) => format!("\n\n{}\n", s) + } + } + /// Return the library name fn lib_name () -> String diff --git a/src/headers/templates/c/_prelude.h b/src/headers/templates/c/_prelude.h index 23addb81fb..d211c556e7 100644 --- a/src/headers/templates/c/_prelude.h +++ b/src/headers/templates/c/_prelude.h @@ -1,5 +1,5 @@ #ifndef {guard} -#define {guard} +#define {guard}{text_after_guard} #ifdef __cplusplus extern "C" {{ #endif