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)
173 :
ParsingState(type, parser,
std::move(context)), _id(id), _cid(cid), _driver(driver) {}
176 const auto&
id()
const {
return _id; }
179 void debug(
const std::string& msg)
override;
183 std::optional<std::string> _cid;
198 HILTI_EXCEPTION(InvalidUnitType, UserException);
256 void debug(
const std::string& msg);
260 void _debugStats(
size_t current_flows,
size_t current_connections);
262 uint64_t _total_flows = 0;
263 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:176
void reset()
Definition: driver.h:118
bool hasParser() const
Definition: driver.h:48