89#define __ENUMERATE_STATES(M) \
92 M(EscapeIntermediate, escape_intermediate) \
93 M(CsiEntry, csi_entry) \
94 M(CsiParam, csi_param) \
95 M(CsiIntermediate, csi_intermediate) \
96 M(CsiIgnore, csi_ignore) \
97 M(DcsEntry, dcs_entry) \
98 M(DcsParam, dcs_param) \
99 M(DcsIntermediate, dcs_intermediate) \
100 M(DcsPassthrough, dcs_passthrough) \
101 M(DcsIgnore, dcs_ignore) \
102 M(OscString, osc_string) \
103 M(SosPmApcString, sos_pm_apc_string) \
107#define __ENUMERATE_STATE(N, n) N,
109#undef __ENUMERATE_STATE
112#define __ENUMERATE_STATE(N, n) void n##_state(c32 code_point);
114#undef __ENUMERATE_STATE
116 void ignore(
c32 code_point);
117 void print(
c32 code_point);
118 void execute(
c32 code_point);
120 void collect(
c32 code_point);
121 void param(
c32 code_point);
122 void esc_dispatch(
c32 code_point);
123 void csi_dispatch(
c32 code_point);
125 void put(
c32 code_point);
128 void osc_put(
c32 code_point);
130 void output_ss3(
c32 code_point);
132 void transition(State state);
134 void on_input(
c32 code_point);
136 void add_param(di::Optional<u32> param);
138 State m_last_state { State::Ground };
139 State m_next_state { State::Ground };
140 di::Function<void()> m_on_state_exit;
146 bool m_last_separator_was_colon {
false };
148 di::Vector<ParserResult> m_result;
Definition vector_forward_declaration.h:8
Definition variant_forward_declaration.h:6
Definition escape_sequence_parser.h:73
auto parse_input_escape_sequences(di::StringView data, bool flush=true) -> di::Vector< ParserResult >
Definition escape_sequence_parser.cpp:612
auto parse_application_escape_sequences(di::StringView data) -> di::Vector< ParserResult >
Definition escape_sequence_parser.cpp:603
Mode
Definition escape_sequence_parser.h:75
@ Input
Definition escape_sequence_parser.h:77
@ Application
Definition escape_sequence_parser.h:76
#define __ENUMERATE_STATE(N, n)
#define __ENUMERATE_STATES(M)
Definition escape_sequence_parser.h:89
string::StringViewImpl< string::Utf8Encoding > StringView
Definition string_view.h:12
string::StringImpl< string::Utf8Encoding > String
Definition string.h:11
char32_t c32
Definition char.h:6
__UINT32_TYPE__ u32
Definition integers.h:11
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto make_fields
Definition field.h:80
constexpr auto field
Definition field.h:42
Definition escape_sequence_parser.cpp:18
di::Variant< PrintableCharacter, DCS, CSI, Escape, ControlCharacter > ParserResult
Definition escape_sequence_parser.h:71
Definition in_place_type.h:5
Definition escape_sequence_parser.h:34
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< CSI >)
Definition escape_sequence_parser.h:41
auto operator==(CSI const &) const -> bool=default
c32 terminator
Definition escape_sequence_parser.h:37
di::String intermediate
Definition escape_sequence_parser.h:35
Params params
Definition escape_sequence_parser.h:36
Definition escape_sequence_parser.h:59
bool was_in_escape
Definition escape_sequence_parser.h:61
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< ControlCharacter >)
Definition escape_sequence_parser.h:65
auto operator==(ControlCharacter const &) const -> bool=default
u32 code_point
Definition escape_sequence_parser.h:60
Definition escape_sequence_parser.h:21
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< DCS >)
Definition escape_sequence_parser.h:28
di::String intermediate
Definition escape_sequence_parser.h:22
auto operator==(DCS const &) const -> bool=default
Params params
Definition escape_sequence_parser.h:23
di::String data
Definition escape_sequence_parser.h:24
Definition escape_sequence_parser.h:47
c32 terminator
Definition escape_sequence_parser.h:49
auto operator==(Escape const &) const -> bool=default
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< Escape >)
Definition escape_sequence_parser.h:53
di::String intermediate
Definition escape_sequence_parser.h:48
Definition escape_sequence_parser.h:11
constexpr friend auto tag_invoke(di::Tag< di::reflect >, di::InPlaceType< PrintableCharacter >)
Definition escape_sequence_parser.h:16
c32 code_point
Definition escape_sequence_parser.h:12
auto operator==(PrintableCharacter const &) const -> bool=default