std.regex.internal.thompson

Types 3

structThread(DataIndex)
Fields
Thread * next
uint pc
uint counter
uint uopCounter
Group!DataIndex[1] matches
structThreadList(DataIndex)
Fields
Thread!DataIndex * tip
Methods
void insertFront(Thread!DataIndex * t)
void insertBack(Thread!DataIndex * t)
Thread!DataIndex * fetch()
bool empty() @property
ThreadRange opSlice()
Nested Templates
ThreadRange
classThompsonMatcher(Char, StreamType = Input!Char): : Matcher!Char if (is(Char : dchar))
Fields
Thread!DataIndex * freelist
ThreadList!DataIndex clist
DataIndex[] merge
Group!DataIndex[] backrefed
Regex!Char re
Stream s
dchar front
DataIndex index
DataIndex genCounter
size_t[size_t] subCounters
OpFunc[] opCacheTrue
OpFunc[] opCacheFalse
OpBackFunc[] opCacheBackTrue
OpBackFunc[] opCacheBackFalse
size_t threadSize
size_t _refCount
int matched
bool exhausted
__traits(hasMember, Stream, "search") kicked
uint RestartPc
Methods
size_t getThreadSize(const ref Regex!Char re)
size_t initialMemory(const ref Regex!Char re)
bool atStart(){ @property
bool atEnd(){ @property
size_t refCount() @property ref @safe
const(Regex!Char) pattern() @property ref @safe
bool next()
void initExternalMemory(void[] memory)
Matcher!Char rearm(in Char[] data)
auto fwdMatcher()(size_t lo, size_t hi, uint nGroup, size_t counter)
auto bwdMatcher()(size_t lo, size_t hi, uint nGroup, size_t counter)
void dupTo(Matcher!Char engine, void[] memory)
int match(Group!DataIndex[] matches)
int matchImpl(bool withSearch)(Group!DataIndex[] matches)
void finish(const(Thread!DataIndex) * t, Group!DataIndex[] matches, int code)
void eval(bool withInput)(State * state)
int matchOneShot(Group!DataIndex[] matches, uint startPc = 0)
Thread!DataIndex * allocate()
void prepareFreeList(size_t size, ref void[] memory)
void recycle(Thread!DataIndex * t)
void recycle(ref ThreadList!DataIndex list)
Thread!DataIndex * fork(Thread!DataIndex * master, uint pc, uint counter)
Thread!DataIndex * createStart(DataIndex index, uint pc = 0)
Constructors
this(ref const Regex!Char program, Stream stream, void[] memory)
this(ThompsonMatcher matcher, size_t lo, size_t hi, uint nGroup, Stream stream)
this(BackMatcher matcher, size_t lo, size_t hi, uint nGroup, Stream stream)
Nested Templates
State

Templates 2

tmplThompsonOps(E, S, bool withInput: true)
Functions
bool op(IR code: IR.End)(E e, S * state)
bool op(IR code: IR.Wordboundary)(E e, S * state)
bool op(IR code: IR.Notwordboundary)(E e, S * state)
bool op(IR code: IR.Bof)(E e, S * state)
bool op(IR code: IR.Bol)(E e, S * state)
bool op(IR code: IR.Eof)(E e, S * state)
bool op(IR code: IR.Eol)(E e, S * state)
bool op(IR code: IR.InfiniteStart)(E e, S * state)
bool op(IR code: IR.InfiniteBloomStart)(E e, S * state)
bool op(IR code: IR.InfiniteQStart)(E e, S * state)
bool op(IR code: IR.RepeatStart)(E e, S * state)
bool op(IR code: IR.RepeatQStart)(E e, S * state)
bool op(IR code)(E e, S * state) if (code == IR.RepeatEnd || code == IR.RepeatQEnd)
bool op(IR code)(E e, S * state) if (code == IR.InfiniteEnd || code == IR.InfiniteQEnd)
bool op(IR code)(E e, S * state) if (code == IR.InfiniteBloomEnd)
bool op(IR code: IR.OrEnd)(E e, S * state)
bool op(IR code: IR.OrStart)(E e, S * state)
bool op(IR code: IR.Option)(E e, S * state)
bool op(IR code: IR.GotoEndOr)(E e, S * state)
bool op(IR code: IR.GroupStart)(E e, S * state)
bool op(IR code: IR.GroupEnd)(E e, S * state)
bool op(IR code: IR.Backref)(E e, S * state)
bool op(IR code)(E e, S * state) if (code == IR.LookbehindStart || code == IR.NeglookbehindStart)
bool op(IR code)(E e, S * state) if (code == IR.LookaheadStart || code == IR.NeglookaheadStart)
bool op(IR code)(E e, S * state) if (code == IR.LookaheadEnd || code == IR.NeglookaheadEnd || code == IR.LookbehindEnd || code == IR.NeglookbehindEnd)
bool op(IR code: IR.Nop)(E e, S * state)
bool op(IR code: IR.OrChar)(E e, S * state)
bool op(IR code: IR.Char)(E e, S * state)
bool op(IR code: IR.Any)(E e, S * state)
bool op(IR code: IR.CodepointSet)(E e, S * state)
bool op(IR code: IR.Trie)(E e, S * state)
tmplThompsonOps(E, S, bool withInput: false)
Functions
bool op(IR code)(E e, S * state) if (code == IR.Char || code == IR.OrChar || code == IR.CodepointSet || code == IR.Trie || code == IR.Char || code == IR.Any)
bool op(IR code: IR.Backref)(E e, S * state)
bool op(IR code)(E e, S * state) if (code != IR.Char && code != IR.OrChar && code != IR.CodepointSet && code != IR.Trie && code != IR.Char && code != IR.Any && code != IR.Backref)