void ConvertHijriToGregorian(int HijriYear, int HijriMonth, int HijriDay, ref int yg, ref int mg, ref int dg)
{
BCLDebug.Assert( (HijriYear >= MinCalendarYear) && (HijriYear <= MaxCalendarYear), "Hijri year is out of range.");
BCLDebug.Assert( HijriMonth >= 1, "Hijri month is out of range.");
BCLDebug.Assert( HijriDay >= 1, "Hijri day is out of range.");
int index, b, nDays = HijriDay-1;
DateTime dt;
index = HijriYear - MinCalendarYear;
dt = HijriYearInfo[index].GregorianDate;
b = HijriYearInfo[index].HijriMonthsLengthFlags;
for(int m = 1; m < HijriMonth; m++)
{
nDays = nDays+ 29 + (b&1); /* Add the months lengths before mh */
b = b >> 1;
}
dt = dt.AddDays(nDays);
yg = dt.Year;
mg = dt.Month;
dg = dt.Day;
}