Merge pull request #913 from Daniel15/fix-catchall-routing-master
[mono.git] / mcs / class / corlib / System.Globalization / GregorianCalendar.cs
index 19d53b7af586f45b323c13ec2a74b896bdba35c5..82f8e52b113f64506d662da3ebead88bfa6828fc 100644 (file)
@@ -1,4 +1,4 @@
-// GregorianCalendar.cs
+// System.Globalization.GregorianCalendar.cs
 //
 // (C) Ulrich Kunitz 2002
 //
@@ -29,6 +29,7 @@
 namespace System.Globalization {
 
 using System;
+using System.Runtime.InteropServices;
 
 /// <summary>
 /// This is the Gregorian calendar.
@@ -42,7 +43,8 @@ using System;
 /// </para>
 /// </remarks>
 [Serializable]
-[MonoTODO ("Serialization format not compatible with .NET")]
+[ComVisible (true)]
+[MonoLimitation ("Serialization format not compatible with .NET")]
 public class GregorianCalendar : Calendar {
 
        /// <summary>
@@ -304,6 +306,12 @@ public class GregorianCalendar : Calendar {
                return ADEra;
        }
 
+       [ComVisible (false)]
+       public override int GetLeapMonth (int year, int era)
+       {
+               return 0;
+       }
+
        /// <summary>
        /// Overridden. Gives the number of the month of the specified
        /// date.
@@ -336,6 +344,12 @@ public class GregorianCalendar : Calendar {
                return 12;
        }
 
+       [ComVisible (false)]
+       public override int GetWeekOfYear (DateTime time, CalendarWeekRule rule, DayOfWeek firstDayOfWeek)
+       {
+               return base.GetWeekOfYear (time, rule, firstDayOfWeek);
+       }
+
        /// <summary>
        /// Overridden. Gives the number of the year of the specified
        /// date.
@@ -451,20 +465,19 @@ public class GregorianCalendar : Calendar {
        /// is out of range.
        /// </exception>
        public override DateTime ToDateTime(int year, int month, int day,
-               int hour, int minute, int second, int milliseconds,
+               int hour, int minute, int second, int millisecond,
                int era)
        {
                M_CheckYMDE(year, month, day, ref era);
-               M_CheckHMSM(hour, minute, second, milliseconds);
+               M_CheckHMSM(hour, minute, second, millisecond);
                return CCGregorianCalendar.ToDateTime(
                        year, month, day,
-                       hour, minute, second, milliseconds);
+                       hour, minute, second, millisecond);
        }
 
-       [MonoTODO ("Not supported")]
        public override int ToFourDigitYear(int year)
        {
-               throw new NotImplementedException();
+               return base.ToFourDigitYear (year);
        }
                                        
        /// <summary>
@@ -477,34 +490,40 @@ public class GregorianCalendar : Calendar {
        /// </param>
        public GregorianCalendar(GregorianCalendarTypes type) {
                CalendarType = type;
-               M_AbbrEraNames = new string[] {"C.E."};
-               M_EraNames = new string[] {"Common Era"};
+               M_AbbrEraNames = new string[] {"AD"};
+               M_EraNames = new string[] {"A.D."};
                if (twoDigitYearMax == 99)
                        twoDigitYearMax = 2029;
        }
        
-#if NET_2_0
+#if !NET_2_1
+       [ComVisible (false)]
        public override CalendarAlgorithmType AlgorithmType {
                get {
                        return CalendarAlgorithmType.SolarCalendar;
                }
        }
+#endif
 
-       static DateTime Min = new DateTime (1, 1, 1, 0, 0, 0);
-       static DateTime Max = new DateTime (9999, 12, 31, 11, 59, 59);
+       static DateTime? Min, Max;
                
+       [ComVisible (false)]
        public override DateTime MinSupportedDateTime {
                get {
-                       return Min;
+                       if (Min == null)
+                               Min = new DateTime (1, 1, 1, 0, 0, 0);
+                       return Min.Value;
                }
        }
 
+       [ComVisible (false)]
        public override DateTime MaxSupportedDateTime {
                get {
-                       return Max;
+                       if (Max == null)
+                               Max = new DateTime (9999, 12, 31, 11, 59, 59);
+                       return Max.Value;
                }
        }
-#endif
        
        /// <summary>
        /// Default constructor. Sets the Gregorian calendar type to