10 #include <hilti/rt/result.h> 12 #include <spicy/rt/parser.h> 20 enum class ParsingType { Stream, Block };
41 ParsingState(ParsingType type,
const Parser* parser =
nullptr, std::optional<UnitContext> context = {})
42 : _type(type), _parser(parser), _context(std::move(context)) {}
48 bool hasParser()
const {
return _parser !=
nullptr; }
63 _context = std::move(context);
102 State process(
size_t size,
const char* data) {
return _process(size, data,
false); }
111 std::optional<hilti::rt::stream::Offset> finish();
131 virtual void debug(
const std::string& msg) = 0;
136 void debug(
const std::string& msg,
size_t size,
const char* data);
139 State _process(
size_t size,
const char* data,
bool eod =
true);
144 std::optional<UnitContext> _context;
148 std::optional<hilti::rt::ValueReference<hilti::rt::Stream>> _input;
149 std::optional<hilti::rt::Resumable> _resumable;
172 std::optional<UnitContext> context,
Driver* driver)
174 _id(
std::move(
std::move(id))),
175 _cid(
std::move(
std::move(cid))),
179 const auto&
id()
const {
return _id; }
182 void debug(
const std::string& msg)
override;
186 std::optional<std::string> _cid;
201 HILTI_EXCEPTION(InvalidUnitType, UsageError);
259 void debug(
const std::string& msg);
263 void _debugStats(
size_t current_flows,
size_t current_connections);
265 uint64_t _total_flows = 0;
266 uint64_t _total_connections = 0;
void setParser(const Parser *parser, std::optional< UnitContext > context={})
Definition: driver.h:61
ParsingStateForDriver(ParsingType type, const Parser *parser, std::string id, std::optional< std::string > cid, std::optional< UnitContext > context, Driver *driver)
Definition: driver.h:171
Definition: optional.h:79
bool isFinished() const
Definition: driver.h:71
void skipRemaining()
Definition: driver.h:77
ParsingState(ParsingType type, const Parser *parser=nullptr, std::optional< UnitContext > context={})
Definition: driver.h:41
State
Definition: driver.h:83
State process(size_t size, const char *data)
Definition: driver.h:102
bool isSkipping() const
Definition: driver.h:80
const auto & id() const
Definition: driver.h:179
void reset()
Definition: driver.h:118
bool hasParser() const
Definition: driver.h:48