Files
2026-06-04 11:42:34 +02:00

174 lines
4.5 KiB
C#

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;
}
}
}