9#include "../microfmt.hpp"
12#include <reloco/type_id.hpp>
24 bool uppercase{
false};
35#if MICROFMT_SHARED_PROVIDE_DEFINITIONS
43 T, std::void_t<decltype(std::declval<const T &>().data()), decltype(std::declval<const T &>().size())>>
44 : std::integral_constant<bool, std::is_convertible_v<decltype(std::declval<const T &>().data()), const uint8_t *> &&
45 std::is_convertible_v<decltype(std::declval<const T &>().size()), size_t>> {};
53[[nodiscard]]
constexpr uuid_view uuid(span<const uint8_t> b,
bool uppercase =
false,
bool braced =
false) noexcept {
58[[nodiscard]]
constexpr uuid_view uuid(
const uint8_t (&arr)[16],
bool uppercase =
false,
bool braced =
false) noexcept {
59 return uuid_view{span<const uint8_t>(arr, 16), uppercase, braced};
63template <typename ArrayT, std::enable_if_t<detail::is_uuid_container<ArrayT>::value,
int> = 0>
64[[nodiscard]]
constexpr uuid_view uuid(
const ArrayT &arr,
bool uppercase =
false,
bool braced =
false) noexcept {
65 return uuid_view{span<const uint8_t>(arr.data(), arr.size()), uppercase, braced};
68template <
typename ArrayT, std::enable_if_t<!std::is_lvalue_reference_v<ArrayT> &&
69 detail::is_uu
id_container<std::remove_reference_t<ArrayT>>::value,
71[[nodiscard]]
constexpr uuid_view uuid(ArrayT &&,
bool =
false,
bool =
false) noexcept = delete;
73#if MICROFMT_HAS_BOOST_UUID
75[[nodiscard]]
constexpr uuid_view uuid(
const boost::uuids::uuid &u,
bool uppercase =
false,
76 bool braced =
false) noexcept {
77 return uuid_view{span<const uint8_t>(u.data, 16), uppercase, braced};
80[[nodiscard]]
constexpr uuid_view
uuid(boost::uuids::uuid &&,
bool =
false,
bool =
false) noexcept = delete;
88 bool uppercase{
false};
92 for (
char c : ctx.spec()) {
105#if MICROFMT_HAS_BOOST_UUID
106template <>
struct formatter<boost::uuids::uuid> {
107 bool uppercase{
false};
110 constexpr void parse(format_parse_context &ctx)
noexcept {
111 for (
char c : ctx.spec()) {
119 void format(
const boost::uuids::uuid &u,
const sink &out)
const noexcept {
Definition microfmt.hpp:881
#define MICROFMT_API_CLASS
Definition compat.hpp:181
#define MICROFMT_API
Definition compat.hpp:135
MICROFMT_API void format_uuid_bytes(const sink &out, span< const uint8_t > bytes, bool is_upper, bool is_braced) noexcept
reloco::sink sink
Type-erased, zero-allocation output sink.
Definition microfmt.hpp:46
constexpr uuid_view uuid(span< const uint8_t > b, bool uppercase=false, bool braced=false) noexcept
Definition uuid.hpp:53
RELOCO_CONSTEXPR20 buffer_sink< N > format(microfmt::string_view fmt, const Args &...args) noexcept
Definition microfmt.hpp:1786
constexpr bytes_view bytes(uint64_t count) noexcept
Definition format_helpers.hpp:82
RELOCO_TYPE_ID_NAME(microfmt::uuid_view, "microfmt::uuid_view")