using System; using System.Collections; using System.IO; namespace System.Globalization { // Token: 0x02000175 RID: 373 [Serializable] internal class CCGregorianEraHandler { // Token: 0x06001215 RID: 4629 RVA: 0x00046F28 File Offset: 0x00045128 public CCGregorianEraHandler() { this._Eras = new SortedList(); } // Token: 0x17000305 RID: 773 // (get) Token: 0x06001216 RID: 4630 RVA: 0x00046F3C File Offset: 0x0004513C public int[] Eras { get { int[] array = new int[this._Eras.Count]; for (int i = 0; i < this._Eras.Count; i++) { array[i] = ((CCGregorianEraHandler.Era)this._Eras.GetByIndex(i)).Nr; } return array; } } // Token: 0x06001217 RID: 4631 RVA: 0x00046F94 File Offset: 0x00045194 public void appendEra(int nr, int rd_start, int rd_end) { CCGregorianEraHandler.Era era = new CCGregorianEraHandler.Era(nr, rd_start, rd_end); this._Eras[nr] = era; } // Token: 0x06001218 RID: 4632 RVA: 0x00046FC4 File Offset: 0x000451C4 public void appendEra(int nr, int rd_start) { this.appendEra(nr, rd_start, CCFixed.FromDateTime(DateTime.MaxValue)); } // Token: 0x06001219 RID: 4633 RVA: 0x00046FD8 File Offset: 0x000451D8 public int GregorianYear(int year, int era) { return ((CCGregorianEraHandler.Era)this._Eras[era]).GregorianYear(year); } // Token: 0x0600121A RID: 4634 RVA: 0x00047004 File Offset: 0x00045204 public int EraYear(out int era, int date) { IList valueList = this._Eras.GetValueList(); foreach (object obj in valueList) { CCGregorianEraHandler.Era era2 = (CCGregorianEraHandler.Era)obj; if (era2.Covers(date)) { return era2.EraYear(out era, date); } } throw new ArgumentOutOfRangeException("date", "Time value was out of era range."); } // Token: 0x0600121B RID: 4635 RVA: 0x000470A4 File Offset: 0x000452A4 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: 0x0600121C RID: 4636 RVA: 0x000470D4 File Offset: 0x000452D4 public bool ValidDate(int date) { IList valueList = this._Eras.GetValueList(); foreach (object obj in valueList) { if (((CCGregorianEraHandler.Era)obj).Covers(date)) { return true; } } return false; } // Token: 0x0600121D RID: 4637 RVA: 0x00047160 File Offset: 0x00045360 public bool ValidEra(int era) { return this._Eras.Contains(era); } // Token: 0x040004AA RID: 1194 private SortedList _Eras; // Token: 0x02000176 RID: 374 [Serializable] private struct Era { // Token: 0x0600121E RID: 4638 RVA: 0x00047174 File Offset: 0x00045374 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: 0x17000306 RID: 774 // (get) Token: 0x0600121F RID: 4639 RVA: 0x000471E8 File Offset: 0x000453E8 public int Nr { get { return this._nr; } } // Token: 0x06001220 RID: 4640 RVA: 0x000471F0 File Offset: 0x000453F0 public int GregorianYear(int year) { if (year < 1 || year > this._maxYear) { StringWriter stringWriter = new StringWriter(); stringWriter.Write("Valid Values are between {0} and {1}, inclusive.", 1, this._maxYear); throw new ArgumentOutOfRangeException("year", stringWriter.ToString()); } return year + this._gregorianYearStart - 1; } // Token: 0x06001221 RID: 4641 RVA: 0x00047250 File Offset: 0x00045450 public bool Covers(int date) { return this._start <= date && date <= this._end; } // Token: 0x06001222 RID: 4642 RVA: 0x00047270 File Offset: 0x00045470 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: 0x040004AB RID: 1195 private int _nr; // Token: 0x040004AC RID: 1196 private int _start; // Token: 0x040004AD RID: 1197 private int _gregorianYearStart; // Token: 0x040004AE RID: 1198 private int _end; // Token: 0x040004AF RID: 1199 private int _maxYear; } } }