/* headerwriter.hpp - Copyright (C) 2015-2024 a dinosaur (zlib, see COPYING.txt) */ #ifndef HEADERWRITER_HPP #define HEADERWRITER_HPP #include #include #include #include #include #include #include #include template concept NumericType = std::integral || std::floating_point; class HeaderWriter { std::ofstream stream; std::string mName; void WriteGuardStart(); void WriteGuardEnd(); public: ~HeaderWriter(); [[nodiscard]] bool Open(const std::filesystem::path& path, const std::string_view name); void WriteDefine(const std::string_view name, const std::string_view value); void WriteSymbol(const std::string_view name, const std::string_view type, std::size_t count); template void WriteDefine(const std::string_view name, T value) { WriteDefine(name, std::to_string(value)); } void WriteSize(int width, int height); void WriteCharacterMap(const std::span charData); void WriteCollision(const std::span collisionData); void WriteObjects(const std::span objData); }; #endif//HEADERWRITER_HPP