Merge pull request #1624 from esdrubal/getprocesstimes
[mono.git] / mcs / class / corlib / System.Globalization / CultureInfo.cs
index 641a7c650cea706132018601cf715bc21439bcc9..0793fe501e44159c1a0cab702f1b2fc60e47f16b 100644 (file)
@@ -60,10 +60,10 @@ namespace System.Globalization
                int default_calendar_type;
                bool m_useUserOverride;
                [NonSerialized]
-               volatile NumberFormatInfo numInfo;
+               internal volatile NumberFormatInfo numInfo;
                internal volatile DateTimeFormatInfo dateTimeInfo;
                volatile TextInfo textInfo;
-               private string m_name;
+               internal string m_name;
                
                [NonSerialized]
                private string englishname;
@@ -423,7 +423,7 @@ namespace System.Globalization
 
                        for (int i = 1; i < infos.Length; ++i) {
                                var ci = infos [i];
-                               infos [i].m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.iso2lang);
+                               infos [i].m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang);
                        }
 
                        return infos;
@@ -494,15 +494,10 @@ namespace System.Globalization
 
                public virtual NumberFormatInfo NumberFormat {
                        get {
-                               if (!constructed) Construct ();
-                               CheckNeutral ();
-                               if (numInfo == null){
-                                       lock (this){
-                                               if (numInfo == null) {
-                                                       numInfo = new NumberFormatInfo (m_isReadOnly);
-                                                       construct_number_format ();
-                                               }
-                                       }
+                               if (numInfo == null) {
+                                       NumberFormatInfo temp = new NumberFormatInfo(this.m_cultureData);
+                                       temp.isReadOnly = m_isReadOnly;
+                                       numInfo = temp;
                                }
 
                                return numInfo;
@@ -605,9 +600,6 @@ namespace System.Globalization
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private extern static CultureInfo [] internal_get_cultures (bool neutral, bool specific, bool installed);
 
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               private extern void construct_number_format ();
-
                private void ConstructInvariant (bool read_only)
                {
                        cultureID = InvariantCultureId;
@@ -665,7 +657,7 @@ namespace System.Globalization
                                throw new CultureNotFoundException ("culture", msg);
                        }
 
-                       m_cultureData = CultureData.GetCultureData (m_name, m_useUserOverride, datetime_index, CalendarType, iso2lang);
+                       m_cultureData = CultureData.GetCultureData (m_name, m_useUserOverride, datetime_index, CalendarType, number_index, iso2lang);
                }
 
                public CultureInfo (string name) : this (name, true) {}
@@ -694,7 +686,7 @@ namespace System.Globalization
                                throw CreateNotFoundException (name);
                        }
 
-                       m_cultureData = CultureData.GetCultureData (m_name, useUserOverride, datetime_index, CalendarType, iso2lang);
+                       m_cultureData = CultureData.GetCultureData (m_name, useUserOverride, datetime_index, CalendarType, number_index, iso2lang);
                }
 
                // This is used when creating by specific name and creating by
@@ -811,7 +803,7 @@ namespace System.Globalization
                        if (ci.IsNeutralCulture)
                                ci = CreateSpecificCultureFromNeutral (ci.Name);
 
-                       ci.m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.iso2lang);
+                       ci.m_cultureData = CultureData.GetCultureData (ci.m_name, false, ci.datetime_index, ci.CalendarType, ci.number_index, ci.iso2lang);
                        return ci;
                }
 
@@ -1052,6 +1044,12 @@ namespace System.Globalization
                        }
                }
 
+               internal string SortName {
+                       get {
+                               return m_name;
+                       }
+               }
+
 #region reference sources
                // TODO:
                internal static readonly bool IsTaiwanSku;