diff --git a/src/c_templates.rs b/src/c_templates.rs new file mode 100644 index 0000000000000000000000000000000000000000..53e8ca18b064d3ff7668c84590ec95bfd10b16e1 --- /dev/null +++ b/src/c_templates.rs @@ -0,0 +1,41 @@ +use simplegen::CodeBuffer; + +pub fn template_for_header(filename: &str) -> CodeBuffer { + let mut buffer = CodeBuffer::new(4); + + let mut mod_filename = filename.to_string(); + + // Removing trailing whitespace and extension from filename + for _ in 0..3 { + mod_filename.pop(); + } + + print!("{}", mod_filename); + + buffer.println(format!("#ifndef _{}_H_", mod_filename.to_uppercase()).as_str()); + buffer.println(format!("#define _{}_H_", mod_filename.to_uppercase()).as_str()); + buffer.println(""); + buffer.println(format!("typedef struct _{}_t", mod_filename.to_lowercase()).as_str()); + buffer.println("{"); + buffer.println(""); + buffer.println(format!("}} {}_t;", mod_filename.to_lowercase()).as_str()); + buffer.println(""); + buffer.println("#endif"); + + return buffer; +} + +pub fn template_for_main() -> CodeBuffer { + let mut buffer = CodeBuffer::new(4); + + buffer.println("#include <stdio.h>"); + buffer.println("#include <stdlib.h>"); + buffer.println(""); + buffer.println("int main()"); + buffer.println("{"); + buffer.println(""); + buffer.println_right("return 0;"); + buffer.println_left("}"); + + return buffer; +}