Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
format.hpp
Go to the documentation of this file.
1#pragma once
2
10
11#include <fmt/format.h>
12
13#include <cstddef>
14#include <format>
15
17template <class IndexType, std::size_t... Extents> struct std::formatter<stdex::extents<IndexType, Extents...>>
18{
19 constexpr auto parse(format_parse_context& context) { return context.begin(); }
20
21 template <class FormatContext>
22 auto format(stdex::extents<IndexType, Extents...> const& extents, FormatContext& context) const
23 {
24 auto output = context.out();
25 output = fmt::format_to(output, "extents(");
26 for (std::size_t axis = 0; axis < extents.rank(); ++axis)
27 {
28 if (axis != 0) output = fmt::format_to(output, ",");
29 output = fmt::format_to(output, "{}", extents.extent(axis));
30 }
31 return fmt::format_to(output, ")");
32 }
33};
34
35namespace fmt
36{
37
39template <class IndexType, std::size_t... StaticExtents> struct formatter<stdex::extents<IndexType, StaticExtents...>>
40{
41 constexpr auto parse(format_parse_context& context) { return context.begin(); }
42
43 template <class FormatContext>
44 constexpr auto format(stdex::extents<IndexType, StaticExtents...> const& extents, FormatContext& context) const
45 {
46 auto output = context.out();
47 *output++ = '[';
48 for (std::size_t axis = 0; axis < sizeof...(StaticExtents); ++axis)
49 {
50 if (axis != 0) *output++ = ',';
51 output = fmt::format_to(output, "{}", extents.extent(axis));
52 }
53 *output++ = ']';
54 return output;
55 }
56};
57
58} // namespace fmt
Configured gateway to Uni20's mdspan implementation.
Definition format.hpp:36
constexpr auto parse(format_parse_context &context)
Definition format.hpp:41
constexpr auto format(stdex::extents< IndexType, StaticExtents... > const &extents, FormatContext &context) const
Definition format.hpp:44
constexpr auto parse(format_parse_context &context)
Definition format.hpp:19
auto format(stdex::extents< IndexType, Extents... > const &extents, FormatContext &context) const
Definition format.hpp:22