Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Scan< TState >()

void System.Text.RegularExpressions.RegexRunner.Scan< TState > ( Regex regex,
string text,
int textstart,
ref TState state,
MatchCallback< TState > callback,
bool reuseMatchObject,
TimeSpan timeout )
inlinepackage

Definition at line 130 of file RegexRunner.cs.

131 {
132 _timeout = -1;
133 bool flag = (_ignoreTimeout = Regex.InfiniteMatchTimeout == timeout);
134 if (!flag)
135 {
136 _timeout = (int)(timeout.TotalMilliseconds + 0.5);
137 _timeoutOccursAt = Environment.TickCount + _timeout;
139 }
140 int num = 1;
141 int num2 = text.Length;
142 if (regex.RightToLeft)
143 {
144 num = -1;
145 num2 = 0;
146 }
147 runregex = regex;
148 runtextstart = (runtextpos = textstart);
149 runtext = text;
150 runtextend = text.Length;
151 runtextbeg = 0;
152 bool flag2 = false;
153 while (true)
154 {
155 if (FindFirstChar())
156 {
157 if (!flag)
158 {
160 }
161 if (!flag2)
162 {
164 flag2 = true;
165 }
166 Go();
167 Match match = runmatch;
168 if (match._matchcount[0] > 0)
169 {
170 if (!reuseMatchObject)
171 {
172 runmatch = null;
173 }
175 flag2 = false;
176 if (!callback(ref state, match))
177 {
178 runtext = null;
179 if (reuseMatchObject)
180 {
181 match.Text = null;
182 }
183 return;
184 }
186 runtrackpos = runtrack.Length;
187 runstackpos = runstack.Length;
188 runcrawlpos = runcrawl.Length;
189 if (match.Length != 0)
190 {
191 continue;
192 }
193 if (runtextpos == num2)
194 {
195 runtext = null;
196 if (reuseMatchObject)
197 {
198 match.Text = null;
199 }
200 return;
201 }
202 runtextpos += num;
203 continue;
204 }
205 runtrackpos = runtrack.Length;
206 runstackpos = runstack.Length;
207 runcrawlpos = runcrawl.Length;
208 }
209 if (runtextpos == num2)
210 {
211 break;
212 }
213 runtextpos += num;
214 }
215 runtext = null;
216 if (runmatch != null)
217 {
218 runmatch.Text = null;
219 }
220 }

References System.Text.RegularExpressions.RegexRunner._ignoreTimeout, System.Text.RegularExpressions.RegexRunner._timeout, System.Text.RegularExpressions.RegexRunner._timeoutChecksToSkip, System.Text.RegularExpressions.RegexRunner._timeoutOccursAt, System.Text.RegularExpressions.RegexRunner.DoCheckTimeout(), System.Text.RegularExpressions.RegexRunner.FindFirstChar(), System.Text.RegularExpressions.RegexRunner.Go(), System.Text.RegularExpressions.RegexRunner.InitializeForGo(), System.match, System.Text.RegularExpressions.Regex.RightToLeft, System.Text.RegularExpressions.RegexRunner.runcrawl, System.Text.RegularExpressions.RegexRunner.runcrawlpos, System.Text.RegularExpressions.RegexRunner.runmatch, System.Text.RegularExpressions.RegexRunner.runregex, System.Text.RegularExpressions.RegexRunner.runstack, System.Text.RegularExpressions.RegexRunner.runstackpos, System.Text.RegularExpressions.RegexRunner.runtext, System.Text.RegularExpressions.RegexRunner.runtextbeg, System.Text.RegularExpressions.RegexRunner.runtextend, System.Text.RegularExpressions.RegexRunner.runtextpos, System.Text.RegularExpressions.RegexRunner.runtextstart, System.Text.RegularExpressions.RegexRunner.runtrack, System.Text.RegularExpressions.RegexRunner.runtrackpos, System.state, System.text, System.Text.RegularExpressions.Match.Tidy(), and System.timeout.