scripts
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace System.Text.RegularExpressions
|
||||
{
|
||||
// Token: 0x020002D3 RID: 723
|
||||
internal class IntervalCollection : ICollection, IEnumerable
|
||||
{
|
||||
// Token: 0x06001A4F RID: 6735 RVA: 0x0005F3E0 File Offset: 0x0005D5E0
|
||||
public IntervalCollection()
|
||||
{
|
||||
this.intervals = new ArrayList();
|
||||
}
|
||||
|
||||
// Token: 0x1700081B RID: 2075
|
||||
public Interval this[int i]
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Interval)this.intervals[i];
|
||||
}
|
||||
set
|
||||
{
|
||||
this.intervals[i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001A52 RID: 6738 RVA: 0x0005F41C File Offset: 0x0005D61C
|
||||
public void Add(Interval i)
|
||||
{
|
||||
this.intervals.Add(i);
|
||||
}
|
||||
|
||||
// Token: 0x06001A53 RID: 6739 RVA: 0x0005F430 File Offset: 0x0005D630
|
||||
public void Clear()
|
||||
{
|
||||
this.intervals.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x06001A54 RID: 6740 RVA: 0x0005F440 File Offset: 0x0005D640
|
||||
public void Sort()
|
||||
{
|
||||
this.intervals.Sort();
|
||||
}
|
||||
|
||||
// Token: 0x06001A55 RID: 6741 RVA: 0x0005F450 File Offset: 0x0005D650
|
||||
public void Normalize()
|
||||
{
|
||||
this.intervals.Sort();
|
||||
int i = 0;
|
||||
while (i < this.intervals.Count - 1)
|
||||
{
|
||||
Interval interval = (Interval)this.intervals[i];
|
||||
Interval interval2 = (Interval)this.intervals[i + 1];
|
||||
if (!interval.IsDisjoint(interval2) || interval.IsAdjacent(interval2))
|
||||
{
|
||||
interval.Merge(interval2);
|
||||
this.intervals[i] = interval;
|
||||
this.intervals.RemoveAt(i + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001A56 RID: 6742 RVA: 0x0005F4F4 File Offset: 0x0005D6F4
|
||||
public IntervalCollection GetMetaCollection(IntervalCollection.CostDelegate cost_del)
|
||||
{
|
||||
IntervalCollection intervalCollection = new IntervalCollection();
|
||||
this.Normalize();
|
||||
this.Optimize(0, this.Count - 1, intervalCollection, cost_del);
|
||||
intervalCollection.intervals.Sort();
|
||||
return intervalCollection;
|
||||
}
|
||||
|
||||
// Token: 0x06001A57 RID: 6743 RVA: 0x0005F52C File Offset: 0x0005D72C
|
||||
private void Optimize(int begin, int end, IntervalCollection meta, IntervalCollection.CostDelegate cost_del)
|
||||
{
|
||||
Interval interval;
|
||||
interval.contiguous = false;
|
||||
int num = -1;
|
||||
int num2 = -1;
|
||||
double num3 = 0.0;
|
||||
for (int i = begin; i <= end; i++)
|
||||
{
|
||||
interval.low = this[i].low;
|
||||
double num4 = 0.0;
|
||||
for (int j = i; j <= end; j++)
|
||||
{
|
||||
interval.high = this[j].high;
|
||||
num4 += cost_del(this[j]);
|
||||
double num5 = cost_del(interval);
|
||||
if (num5 < num4 && num4 > num3)
|
||||
{
|
||||
num = i;
|
||||
num2 = j;
|
||||
num3 = num4;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (num < 0)
|
||||
{
|
||||
for (int k = begin; k <= end; k++)
|
||||
{
|
||||
meta.Add(this[k]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
interval.low = this[num].low;
|
||||
interval.high = this[num2].high;
|
||||
meta.Add(interval);
|
||||
if (num > begin)
|
||||
{
|
||||
this.Optimize(begin, num - 1, meta, cost_del);
|
||||
}
|
||||
if (num2 < end)
|
||||
{
|
||||
this.Optimize(num2 + 1, end, meta, cost_del);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700081C RID: 2076
|
||||
// (get) Token: 0x06001A58 RID: 6744 RVA: 0x0005F67C File Offset: 0x0005D87C
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.intervals.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700081D RID: 2077
|
||||
// (get) Token: 0x06001A59 RID: 6745 RVA: 0x0005F68C File Offset: 0x0005D88C
|
||||
public bool IsSynchronized
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700081E RID: 2078
|
||||
// (get) Token: 0x06001A5A RID: 6746 RVA: 0x0005F690 File Offset: 0x0005D890
|
||||
public object SyncRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.intervals;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001A5B RID: 6747 RVA: 0x0005F698 File Offset: 0x0005D898
|
||||
public void CopyTo(Array array, int index)
|
||||
{
|
||||
foreach (object obj in this.intervals)
|
||||
{
|
||||
Interval interval = (Interval)obj;
|
||||
if (index > array.Length)
|
||||
{
|
||||
break;
|
||||
}
|
||||
array.SetValue(interval, index++);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001A5C RID: 6748 RVA: 0x0005F724 File Offset: 0x0005D924
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
return new IntervalCollection.Enumerator(this.intervals);
|
||||
}
|
||||
|
||||
// Token: 0x0400159C RID: 5532
|
||||
private ArrayList intervals;
|
||||
|
||||
// Token: 0x020002D4 RID: 724
|
||||
private class Enumerator : IEnumerator
|
||||
{
|
||||
// Token: 0x06001A5D RID: 6749 RVA: 0x0005F734 File Offset: 0x0005D934
|
||||
public Enumerator(IList list)
|
||||
{
|
||||
this.list = list;
|
||||
this.Reset();
|
||||
}
|
||||
|
||||
// Token: 0x1700081F RID: 2079
|
||||
// (get) Token: 0x06001A5E RID: 6750 RVA: 0x0005F74C File Offset: 0x0005D94C
|
||||
public object Current
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.ptr >= this.list.Count)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
return this.list[this.ptr];
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001A5F RID: 6751 RVA: 0x0005F77C File Offset: 0x0005D97C
|
||||
public bool MoveNext()
|
||||
{
|
||||
if (this.ptr > this.list.Count)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
return ++this.ptr < this.list.Count;
|
||||
}
|
||||
|
||||
// Token: 0x06001A60 RID: 6752 RVA: 0x0005F7C4 File Offset: 0x0005D9C4
|
||||
public void Reset()
|
||||
{
|
||||
this.ptr = -1;
|
||||
}
|
||||
|
||||
// Token: 0x0400159D RID: 5533
|
||||
private IList list;
|
||||
|
||||
// Token: 0x0400159E RID: 5534
|
||||
private int ptr;
|
||||
}
|
||||
|
||||
// Token: 0x0200031A RID: 794
|
||||
// (Invoke) Token: 0x06001C41 RID: 7233
|
||||
public delegate double CostDelegate(Interval i);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user