Iros
 
Loading...
Searching...
No Matches
code_point_parser.h
Go to the documentation of this file.
1#pragma once
2
9
10namespace di::parser {
11namespace detail {
12 class CodePointParser : public ParserBase<CodePointParser> {
13 public:
14 template<concepts::ParserContext Context>
15 constexpr auto parse(Context& context) const -> meta::ParserContextResult<c32, Context> {
16 if (container::empty(context)) {
17 return vocab::Unexpected(context.make_error());
18 }
19 auto it = container::begin(context);
20 auto result = *it;
21 context.advance(++it);
22 return result;
23 }
24 };
25
27 constexpr auto operator()() const { return CodePointParser {}; }
28 };
29
33}
34
35constexpr inline auto code_point = detail::CodePointFunction {};
36}
Definition parser_base.h:5
Definition code_point_parser.h:12
constexpr auto parse(Context &context) const -> meta::ParserContextResult< c32, Context >
Definition code_point_parser.h:15
Definition parser_context.h:12
constexpr auto empty
Definition empty.h:45
constexpr auto begin
Definition begin.h:44
vocab::Expected< T, meta::ParserContextError< Context > > ParserContextResult
Definition parser_context_result.h:8
Definition zstring_parser.h:10
Definition zstring_parser.h:9
constexpr auto code_point
Definition code_point_parser.h:35
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 code_point_parser.h:26
constexpr auto operator()() const
Definition code_point_parser.h:27
Definition in_place_type.h:5