From bc0816e76d4b2647d56e162e2c5416a6264a6ac2 Mon Sep 17 00:00:00 2001 From: Abdelrahman Said Date: Sun, 2 Mar 2025 13:13:27 +0000 Subject: [PATCH] Switch to using header guards and add c linkage --- codegen/datatypes.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/codegen/datatypes.py b/codegen/datatypes.py index 51b1a76..36af7f9 100644 --- a/codegen/datatypes.py +++ b/codegen/datatypes.py @@ -213,7 +213,13 @@ class CHeader(CFile): funcs: list[CFunc] = field(default_factory=list) def __str__(self) -> str: - pragma = "#pragma once\n\n" + name_upper = self.name.upper() + header_guard_name = f"{name_upper}_H" + header_guard_open = f"#ifndef {header_guard_name}\n#define {header_guard_name}\n\n" + header_guard_close = f"#endif // !{header_guard_name}\n" + + c_linkage_open = "#ifdef __cplusplus\nBEGIN_C_LINKAGE\n#endif // !__cplusplus" + c_linkage_close = "#ifdef __cplusplus\nEND_C_LINKAGE\n#endif // !__cplusplus" includes = _get_includes_string(self.includes) @@ -231,7 +237,7 @@ class CHeader(CFile): for func in self.funcs: funcs += func.declare() - return pragma + includes + forward_declarations + types + funcs + return header_guard_open + includes + c_linkage_open + forward_declarations + types + funcs + c_linkage_close + header_guard_close @dataclass