#pragma once #include namespace gridfire { struct version { static constexpr int major = #STRINGIFY(GF_VERSION_MAJOR); static constexpr int minor = #STRINGIFY(GF_VERSION_MINOR); static constexpr int patch = #STRINGIFY(GF_VERSION_PATCH); static constexpr const char* tag = #STRINGIFY(GF_VERSION_TAG); }; } template <> struct std::formatter : std::formatter { auto format(const gridfire::version& v, auto& ctx) { std::string versionStr = std::to_string(v.major) + "." + std::to_string(v.minor) + "." + std::to_string(v.patch); if (std::string(v.tag) != "") { versionStr += "-" + std::string(v.tag); } return std::formatter::format(versionStr, ctx); } };