using System; namespace Mono.Globalization.Unicode { // Token: 0x0200007E RID: 126 internal class CodePointIndexer { // Token: 0x06000789 RID: 1929 RVA: 0x00017D80 File Offset: 0x00015F80 public CodePointIndexer(int[] starts, int[] ends, int defaultIndex, int defaultCP) { this.defaultIndex = defaultIndex; this.defaultCP = defaultCP; this.ranges = new CodePointIndexer.TableRange[starts.Length]; for (int i = 0; i < this.ranges.Length; i++) { this.ranges[i] = new CodePointIndexer.TableRange(starts[i], ends[i], (i != 0) ? (this.ranges[i - 1].IndexStart + this.ranges[i - 1].Count) : 0); } for (int j = 0; j < this.ranges.Length; j++) { this.TotalCount += this.ranges[j].Count; } } // Token: 0x0600078A RID: 1930 RVA: 0x00017E50 File Offset: 0x00016050 public static Array CompressArray(Array source, Type type, CodePointIndexer indexer) { int num = 0; for (int i = 0; i < indexer.ranges.Length; i++) { num += indexer.ranges[i].Count; } Array array = Array.CreateInstance(type, num); for (int j = 0; j < indexer.ranges.Length; j++) { Array.Copy(source, indexer.ranges[j].Start, array, indexer.ranges[j].IndexStart, indexer.ranges[j].Count); } return array; } // Token: 0x0600078B RID: 1931 RVA: 0x00017EE8 File Offset: 0x000160E8 public int ToIndex(int cp) { for (int i = 0; i < this.ranges.Length; i++) { if (cp < this.ranges[i].Start) { return this.defaultIndex; } if (cp < this.ranges[i].End) { return cp - this.ranges[i].Start + this.ranges[i].IndexStart; } } return this.defaultIndex; } // Token: 0x0600078C RID: 1932 RVA: 0x00017F70 File Offset: 0x00016170 public int ToCodePoint(int i) { for (int j = 0; j < this.ranges.Length; j++) { if (i < this.ranges[j].IndexStart) { return this.defaultCP; } if (i < this.ranges[j].IndexEnd) { return i - this.ranges[j].IndexStart + this.ranges[j].Start; } } return this.defaultCP; } // Token: 0x04000116 RID: 278 private readonly CodePointIndexer.TableRange[] ranges; // Token: 0x04000117 RID: 279 public readonly int TotalCount; // Token: 0x04000118 RID: 280 private int defaultIndex; // Token: 0x04000119 RID: 281 private int defaultCP; // Token: 0x0200007F RID: 127 [Serializable] internal struct TableRange { // Token: 0x0600078D RID: 1933 RVA: 0x00017FF8 File Offset: 0x000161F8 public TableRange(int start, int end, int indexStart) { this.Start = start; this.End = end; this.Count = this.End - this.Start; this.IndexStart = indexStart; this.IndexEnd = this.IndexStart + this.Count; } // Token: 0x0400011A RID: 282 public readonly int Start; // Token: 0x0400011B RID: 283 public readonly int End; // Token: 0x0400011C RID: 284 public readonly int Count; // Token: 0x0400011D RID: 285 public readonly int IndexStart; // Token: 0x0400011E RID: 286 public readonly int IndexEnd; } } }