di 0.1.0
Loading...
Searching...
No Matches
bool.h
Go to the documentation of this file.
1#pragma once
2
8#include "di/meta/language.h"
16#include "di/types/char.h"
17#include "di/util/get.h"
20
21namespace di::parser {
22namespace detail {
23 struct BooleanFunction {
24 constexpr static auto operator()() {
25 using namespace di::string_view_literals;
26
27 return match_one_or_more('t'_m || 'r'_m || 'u'_m || 'e'_m || 'f'_m || 'a'_m || 'l'_m || 's'_m)
28 << []<concepts::ParserContext Context>(Context& context,
30 if (container::equal(result, "true"_sv)) {
31 return true;
32 }
33 if (container::equal(result, "false"_sv)) {
34 return false;
35 }
37 };
38 }
39 };
40}
41
42constexpr inline auto boolean = detail::BooleanFunction {};
43
44namespace detail {
46 return boolean();
47 }
48}
49}
Definition parser_context.h:12
constexpr auto equal
Definition equal.h:46
Definition string_view.h:18
vocab::Expected< T, meta::ParserContextError< Context > > ParserContextResult
Definition parser_context_result.h:8
Definition bool.h:21
constexpr auto make_error
Definition make_error.h:19
constexpr auto boolean
Definition bool.h:42
constexpr auto match_one_or_more
Definition match_one_or_more.h:32
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Unexpected(E &&) -> Unexpected< meta::UnwrapRefDecay< E > >
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition in_place_type.h:5