12 #include <hilti/rt/extension-points.h> 13 #include <hilti/rt/types/bytes.h> 14 #include <hilti/rt/types/stream.h> 15 #include <hilti/rt/types/vector.h> 19 struct jrx_match_state;
34 friend bool operator!=(
const Flags& a,
const Flags& b) {
return ! (a == b); }
72 std::tuple<int32_t, stream::View> advance(
const stream::View& data);
92 std::tuple<int32_t, uint64_t> advance(
const Bytes& data,
bool is_final =
false);
105 std::pair<int32_t, uint64_t> _advance(
const stream::View& data,
bool is_final);
111 std::unique_ptr<Pimpl> _pimpl;
141 const auto& patterns()
const {
return _patterns; }
142 const auto&
flags()
const {
return _flags; }
156 int32_t match(
const Bytes& data)
const;
183 std::tuple<int32_t, Bytes> find(
const Bytes& data)
const;
192 friend bool operator==(
const RegExp& a,
const RegExp& b) {
194 return a._flags == b._flags && a._patterns == b._patterns;
197 friend bool operator!=(
const RegExp& a,
const RegExp& b) {
return ! (a == b); }
202 jrx_regex_t* _jrx()
const {
203 assert(_jrx_shared &&
"regexp not compiled");
204 return _jrx_shared.get();
206 const auto& _jrxShared()
const {
return _jrx_shared; }
209 int16_t _search_pattern(jrx_match_state* ms,
const char* data,
size_t len, int32_t* so, int32_t* eo)
const;
212 void _compileOne(std::string pattern,
int idx);
215 std::vector<std::string> _patterns;
216 std::shared_ptr<jrx_regex_t>
220 namespace detail::adl {
224 return "<regexp-match-state>";
229 inline std::ostream& operator<<(std::ostream& out,
const RegExp& x) {
std::string to_string(T &&x)
Definition: extension-points.h:26
bool no_sub
Definition: regexp.h:29
bool use_std
Definition: regexp.h:30
Definition: stream.h:1379
Definition: elements.cc:17