using System; using System.Collections; namespace System.Globalization { // Token: 0x02000177 RID: 375 [Serializable] internal class CCEastAsianLunisolarEraHandler { // Token: 0x06001223 RID: 4643 RVA: 0x000472B4 File Offset: 0x000454B4 public CCEastAsianLunisolarEraHandler() { this._Eras = new SortedList(); } // Token: 0x17000307 RID: 775 // (get) Token: 0x06001224 RID: 4644 RVA: 0x000472C8 File Offset: 0x000454C8 public int[] Eras { get { int[] array = new int[this._Eras.Count]; for (int i = 0; i < this._Eras.Count; i++) { array[i] = ((CCEastAsianLunisolarEraHandler.Era)this._Eras.GetByIndex(i)).Nr; } return array; } } // Token: 0x06001225 RID: 4645 RVA: 0x00047320 File Offset: 0x00045520 public void appendEra(int nr, int rd_start, int rd_end) { CCEastAsianLunisolarEraHandler.Era era = new CCEastAsianLunisolarEraHandler.Era(nr, rd_start, rd_end); this._Eras[nr] = era; } // Token: 0x06001226 RID: 4646 RVA: 0x00047350 File Offset: 0x00045550 public void appendEra(int nr, int rd_start) { this.appendEra(nr, rd_start, CCFixed.FromDateTime(DateTime.MaxValue)); } // Token: 0x06001227 RID: 4647 RVA: 0x00047364 File Offset: 0x00045564 public int GregorianYear(int year, int era) { return ((CCEastAsianLunisolarEraHandler.Era)this._Eras[era]).GregorianYear(year); } // Token: 0x06001228 RID: 4648 RVA: 0x00047390 File Offset: 0x00045590 public int EraYear(out int era, int date) { foreach (object obj in this._Eras.Values) { CCEastAsianLunisolarEraHandler.Era era2 = (CCEastAsianLunisolarEraHandler.Era)obj; if (era2.Covers(date)) { return era2.EraYear(out era, date); } } throw new ArgumentOutOfRangeException("date", "Time value was out of era range."); } // Token: 0x06001229 RID: 4649 RVA: 0x0004742C File Offset: 0x0004562C public void CheckDateTime(DateTime time) { int num = CCFixed.FromDateTime(time); if (!this.ValidDate(num)) { throw new ArgumentOutOfRangeException("time", "Time value was out of era range."); } } // Token: 0x0600122A RID: 4650 RVA: 0x0004745C File Offset: 0x0004565C public bool ValidDate(int date) { foreach (object obj in this._Eras.Values) { if (((CCEastAsianLunisolarEraHandler.Era)obj).Covers(date)) { return true; } } return false; } // Token: 0x0600122B RID: 4651 RVA: 0x000474E0 File Offset: 0x000456E0 public bool ValidEra(int era) { return this._Eras.Contains(era); } // Token: 0x040004B0 RID: 1200 private SortedList _Eras; // Token: 0x02000178 RID: 376 [Serializable] private struct Era { // Token: 0x0600122C RID: 4652 RVA: 0x000474F4 File Offset: 0x000456F4 public Era(int nr, int start, int end) { if (nr == 0) { throw new ArgumentException("Era number shouldn't be zero."); } this._nr = nr; if (start > end) { throw new ArgumentException("Era should start before end."); } this._start = start; this._end = end; this._gregorianYearStart = CCGregorianCalendar.year_from_fixed(this._start); int num = CCGregorianCalendar.year_from_fixed(this._end); this._maxYear = num - this._gregorianYearStart + 1; } // Token: 0x17000308 RID: 776 // (get) Token: 0x0600122D RID: 4653 RVA: 0x00047568 File Offset: 0x00045768 public int Nr { get { return this._nr; } } // Token: 0x0600122E RID: 4654 RVA: 0x00047570 File Offset: 0x00045770 public int GregorianYear(int year) { if (year < 1 || year > this._maxYear) { throw new ArgumentOutOfRangeException("year", string.Format("Valid Values are between {0} and {1}, inclusive.", 1, this._maxYear)); } return year + this._gregorianYearStart - 1; } // Token: 0x0600122F RID: 4655 RVA: 0x000475C0 File Offset: 0x000457C0 public bool Covers(int date) { return this._start <= date && date <= this._end; } // Token: 0x06001230 RID: 4656 RVA: 0x000475E0 File Offset: 0x000457E0 public int EraYear(out int era, int date) { if (!this.Covers(date)) { throw new ArgumentOutOfRangeException("date", "Time was out of Era range."); } int num = CCGregorianCalendar.year_from_fixed(date); era = this._nr; return num - this._gregorianYearStart + 1; } // Token: 0x040004B1 RID: 1201 private int _nr; // Token: 0x040004B2 RID: 1202 private int _start; // Token: 0x040004B3 RID: 1203 private int _gregorianYearStart; // Token: 0x040004B4 RID: 1204 private int _end; // Token: 0x040004B5 RID: 1205 private int _maxYear; } } }