ostream& operator<<(ostream& m, const chrono::duration<Rep, Period>& t);
}
+#if FMT_VERSION >= 90000
+template<typename Clock>
+struct fmt::formatter<std::chrono::time_point<Clock>> : fmt::ostream_formatter {};
+#endif
+
#endif // COMMON_CEPH_TIME_H
#ifndef __CEPH_OS_HOBJECT_H
#define __CEPH_OS_HOBJECT_H
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+#endif
+
#include "include/types.h"
#include "json_spirit/json_spirit_value.h"
std::ostream& operator<<(std::ostream& out, const ghobject_t& o);
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<ghobject_t> : fmt::ostream_formatter {};
+#endif
+
extern int cmp(const ghobject_t& l, const ghobject_t& r);
return out << snapc.seq << "=" << snapc.snaps;
}
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<SnapContext> : fmt::ostream_formatter {};
+#endif
+
#endif
std::ostream& operator<<(std::ostream& os, const CrushLocation& loc);
}
#endif
+
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<TOPNSPC::crush::CrushLocation> : fmt::ostream_formatter {};
+#endif
return out << str;
}
+#if FMT_VERSION >= 90000
+template <uint8_t S> struct fmt::formatter<sha_digest_t<S>> : fmt::ostream_formatter {};
+#endif
+
using sha1_digest_t = sha_digest_t<20>;
WRITE_CLASS_ENCODER(sha1_digest_t)
return l.to_string() > r.to_string();
}
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<uuid_d> : fmt::ostream_formatter {};
+#endif
#endif
#ifndef CEPH_MESSAGE_H
#define CEPH_MESSAGE_H
+#include <concepts>
#include <cstdlib>
#include <ostream>
#include <string_view>
return {new T(std::forward<Args>(args)...), TOPNSPC::common::UniquePtrDeleter{}};
}
}
+
+#if FMT_VERSION >= 90000
+template <std::derived_from<Message> M> struct fmt::formatter<M> : fmt::ostream_formatter {};
+#endif
+
#endif
#include <sstream>
#include <netinet/in.h>
+#if FMT_VERSION >= 90000
+#include <fmt/ostream.h>
+#endif
#include "include/ceph_features.h"
#include "include/types.h"
WRITE_CLASS_ENCODER_FEATURES(entity_addr_t)
std::ostream& operator<<(std::ostream& out, const entity_addr_t &addr);
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<entity_addr_t> : fmt::ostream_formatter {};
+#endif
inline bool operator==(const entity_addr_t& a, const entity_addr_t& b) { return memcmp(&a, &b, sizeof(a)) == 0; }
inline bool operator!=(const entity_addr_t& a, const entity_addr_t& b) { return memcmp(&a, &b, sizeof(a)) != 0; }
}
};
WRITE_CLASS_ENCODER_FEATURES(entity_addrvec_t);
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<entity_addrvec_t> : fmt::ostream_formatter {};
+#endif
namespace std {
template<> struct hash<entity_addrvec_t> {
return out;
}
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<coll_t> : fmt::ostream_formatter {};
+#endif
+
namespace std {
template<> struct hash<coll_t> {
size_t operator()(const coll_t &c) const {
};
WRITE_CLASS_ENCODER_FEATURES(pg_missing_item)
std::ostream& operator<<(std::ostream& out, const pg_missing_item &item);
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<pg_missing_item> : fmt::ostream_formatter {};
+#endif
class pg_missing_const_i {
public:
bool debug_log{false};
};
+
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<ObjectRecoveryInfo> : fmt::ostream_formatter {};
+template <> struct fmt::formatter<ObjectRecoveryProgress> : fmt::ostream_formatter {};
+template <> struct fmt::formatter<PastIntervals> : fmt::ostream_formatter {};
+template <> struct fmt::formatter<pg_log_op_return_item_t> : fmt::ostream_formatter {};
+template <> struct fmt::formatter<watch_info_t> : fmt::ostream_formatter {};
+template <bool TrackChanges> struct fmt::formatter<pg_missing_set<TrackChanges>> : fmt::ostream_formatter {};
+#endif
std::ostream &operator<<(std::ostream &out, const BackfillInterval &bi);
+#if FMT_VERSION >= 90000
+template <> struct fmt::formatter<BackfillInterval> : fmt::ostream_formatter {};
+#endif