diff options
Diffstat (limited to 'src/include/object_fmt.h')
-rw-r--r-- | src/include/object_fmt.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/include/object_fmt.h b/src/include/object_fmt.h new file mode 100644 index 000000000..33df5e3fb --- /dev/null +++ b/src/include/object_fmt.h @@ -0,0 +1,29 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +#pragma once + +/** + * \file fmtlib formatters for some object.h structs + */ +#include <fmt/format.h> + +#include "object.h" + + +template <> +struct fmt::formatter<snapid_t> { + + constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); } + + template <typename FormatContext> + auto format(const snapid_t& snp, FormatContext& ctx) const + { + if (snp == CEPH_NOSNAP) { + return fmt::format_to(ctx.out(), "head"); + } + if (snp == CEPH_SNAPDIR) { + return fmt::format_to(ctx.out(), "snapdir"); + } + return fmt::format_to(ctx.out(), "{:x}", snp.val); + } +}; |