Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ ReduceLoops()

RegexNode System.Text.RegularExpressions.RegexNode.ReduceLoops ( )
inlineprivate

Definition at line 315 of file RegexNode.cs.

316 {
317 RegexNode regexNode = this;
318 int type = Type;
319 int num = M;
320 int num2 = N;
321 while (regexNode.ChildCount() > 0)
322 {
323 RegexNode regexNode2 = regexNode.Child(0);
324 if (regexNode2.Type != type)
325 {
326 bool flag = false;
327 if (type == 26)
328 {
329 int type2 = regexNode2.Type;
330 if ((uint)(type2 - 3) <= 2u || (uint)(type2 - 43) <= 2u)
331 {
332 flag = true;
333 }
334 }
335 else
336 {
337 int type3 = regexNode2.Type;
338 if ((uint)(type3 - 6) <= 2u)
339 {
340 flag = true;
341 }
342 }
343 if (!flag)
344 {
345 break;
346 }
347 }
348 if ((regexNode.M == 0 && regexNode2.M > 1) || regexNode2.N < regexNode2.M * 2)
349 {
350 break;
351 }
353 if (regexNode.M > 0)
354 {
355 num = (regexNode.M = ((2147483646 / regexNode.M < num) ? int.MaxValue : (regexNode.M * num)));
356 }
357 if (regexNode.N > 0)
358 {
359 num2 = (regexNode.N = ((2147483646 / regexNode.N < num2) ? int.MaxValue : (regexNode.N * num2)));
360 }
361 }
362 if (num == int.MaxValue)
363 {
364 return new RegexNode(22, Options);
365 }
366 if (regexNode.ChildCount() == 1)
367 {
368 RegexNode regexNode3 = regexNode.Child(0);
369 int type4 = regexNode3.Type;
370 if ((uint)(type4 - 9) <= 2u)
371 {
372 regexNode3.MakeRep((regexNode.Type == 27) ? 6 : 3, regexNode.M, regexNode.N);
374 }
375 }
376 return regexNode;
377 }
RegexNode(int type, RegexOptions options)
Definition RegexNode.cs:23

References System.Text.RegularExpressions.RegexNode.RegexNode(), System.Text.RegularExpressions.RegexNode.M, System.Text.RegularExpressions.RegexNode.N, System.Text.RegularExpressions.RegexNode.Options, System.type, and System.Text.RegularExpressions.RegexNode.Type.

Referenced by System.Text.RegularExpressions.RegexNode.Reduce().