di
0.1.0
Loading...
Searching...
No Matches
bool.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/algorithm/equal.h
"
4
#include "
di/container/string/string_view.h
"
5
#include "
di/math/intcmp/checked.h
"
6
#include "
di/math/numeric_limits.h
"
7
#include "
di/math/to_unsigned.h
"
8
#include "
di/meta/language.h
"
9
#include "
di/parser/basic/match_one_or_more.h
"
10
#include "
di/parser/combinator/optional.h
"
11
#include "
di/parser/combinator/sequence.h
"
12
#include "
di/parser/integral_set.h
"
13
#include "
di/parser/make_error.h
"
14
#include "
di/parser/meta/parser_context_result.h
"
15
#include "
di/parser/parser_base.h
"
16
#include "
di/types/char.h
"
17
#include "
di/util/get.h
"
18
#include "
di/vocab/expected/unexpected.h
"
19
#include "
di/vocab/tuple/make_tuple.h
"
20
21
namespace
di::parser
{
22
namespace
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,
29
auto
result) ->
meta::ParserContextResult<bool, Context>
{
30
if
(
container::equal
(result,
"true"
_sv)) {
31
return
true
;
32
}
33
if
(
container::equal
(result,
"false"
_sv)) {
34
return
false
;
35
}
36
return
vocab::Unexpected
(
parser::make_error
(context));
37
};
38
}
39
};
40
}
41
42
constexpr
inline
auto
boolean
= detail::BooleanFunction {};
43
44
namespace
detail {
45
constexpr
auto
tag_invoke
(
types::Tag<create_parser_in_place>
,
InPlaceType<bool>
) {
46
return
boolean
();
47
}
48
}
49
}
checked.h
di::concepts::ParserContext
Definition
parser_context.h:12
equal.h
get.h
integral_set.h
language.h
make_error.h
make_tuple.h
match_one_or_more.h
di::container::equal
constexpr auto equal
Definition
equal.h:46
di::string_view_literals
Definition
string_view.h:18
di::meta::ParserContextResult
vocab::Expected< T, meta::ParserContextError< Context > > ParserContextResult
Definition
parser_context_result.h:8
di::parser
Definition
bool.h:21
di::parser::make_error
constexpr auto make_error
Definition
make_error.h:19
di::parser::boolean
constexpr auto boolean
Definition
bool.h:42
di::parser::match_one_or_more
constexpr auto match_one_or_more
Definition
match_one_or_more.h:32
di::types::Tag
di::meta::Decay< decltype(T)> Tag
Definition
tag_invoke.h:28
di::vocab::Unexpected
Unexpected(E &&) -> Unexpected< meta::UnwrapRefDecay< E > >
di::tag_invoke
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition
tag_invoke.h:22
numeric_limits.h
optional.h
sequence.h
parser_base.h
parser_context_result.h
string_view.h
di::types::InPlaceType
Definition
in_place_type.h:5
to_unsigned.h
char.h
unexpected.h
di
parser
basic
bool.h
Generated by
1.15.0