di 0.1.0
Loading...
Searching...
No Matches
pointer.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/language.h"
6#include "di/types/prelude.h"
7
8namespace di::format {
9template<typename T, concepts::Encoding Enc>
11 return parse<detail::PointerFormat>(parse_context.current_format_string()) % [](detail::PointerFormat format) {
12 return [=](concepts::FormatContext auto& context, T* value) -> Result<void> {
13 auto width = format.width.transform(&detail::Width::value);
14 return detail::present_integer_to<Enc>(
15 context, format.fill_and_align, detail::Sign::Minus, detail::HashTag::Yes, detail::Zero::No, width,
16 detail::IntegerType::HexLower, false, util::bit_cast<uintptr_t>(value));
17 };
18 };
19}
20
21template<concepts::Encoding Enc>
23 FormatParseContext<Enc>& parse_context) {
24 return parse<detail::PointerFormat>(parse_context.current_format_string()) % [](detail::PointerFormat format) {
25 return [=](concepts::FormatContext auto& context, nullptr_t) -> Result<void> {
26 auto width = format.width.transform(&detail::Width::value);
27 return detail::present_integer_to<Enc>(context, format.fill_and_align, detail::Sign::Minus,
28 detail::HashTag::Yes, detail::Zero::No, width,
29 detail::IntegerType::HexLower, false, 0U);
30 };
31 };
32}
33}
Definition format_parse_context.h:14
constexpr auto current_format_string() const -> View
Definition format_parse_context.h:191
Definition format_context.h:9
Definition bounded_format_context.h:7
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
std::nullptr_t nullptr_t
Definition nullptr_t.h:12
Expected< T, Error > Result
Definition result.h:8
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto parse
Definition parse.h:23
Definition in_place_type.h:5