| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- //
- // RegionInfo.cs
- //
- // Author:
- // Atsushi Enomoto <[email protected]>
- //
- //
- // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
- //
- // Permission is hereby granted, free of charge, to any person obtaining
- // a copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to
- // permit persons to whom the Software is furnished to do so, subject to
- // the following conditions:
- //
- // The above copyright notice and this permission notice shall be
- // included in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- //
- using System.Globalization;
- using System.Runtime.CompilerServices;
- namespace System.Globalization
- {
- #if NET_2_0
- [System.Runtime.InteropServices.ComVisible(true)]
- #endif
- [Serializable]
- public class RegionInfo
- {
- static RegionInfo currentRegion;
- // This property is not synchronized with CurrentCulture, so
- // we need to use bootstrap CurrentCulture LCID.
- public static RegionInfo CurrentRegion {
- get {
- if (currentRegion == null) {
- // make sure to fill BootstrapCultureID.
- CultureInfo ci = CultureInfo.CurrentCulture;
- // If current culture is invariant then region is not available.
- if (ci == null || CultureInfo.BootstrapCultureID == 0x7F)
- return null;
- currentRegion = new RegionInfo (CultureInfo.BootstrapCultureID);
- }
- return currentRegion;
- }
- }
- int regionId;
- string iso2Name;
- string iso3Name;
- string win3Name;
- string englishName;
- string currencySymbol;
- string isoCurrencySymbol;
- string currencyEnglishName;
- public RegionInfo (int lcid)
- {
- if (!construct_internal_region_from_lcid (lcid))
- throw new ArgumentException (
- String.Format ("Region ID {0} (0x{0:X4}) is not a " +
- "supported region.", lcid), "lcid");
- }
- public RegionInfo (string name)
- {
- if (name == null)
- throw new ArgumentNullException ();
- if (!construct_internal_region_from_name (name.ToUpperInvariant ()))
- throw new ArgumentException ("Region name " + name +
- " is not supported.", "name");
- }
- [MethodImplAttribute (MethodImplOptions.InternalCall)]
- private extern bool construct_internal_region_from_lcid (int lcid);
- [MethodImplAttribute (MethodImplOptions.InternalCall)]
- private extern bool construct_internal_region_from_name (string name);
- #if NET_2_0
- [System.Runtime.InteropServices.ComVisible(false)]
- public virtual string CurrencyEnglishName {
- get { return currencyEnglishName; }
- }
- #endif
- public virtual string CurrencySymbol {
- get { return currencySymbol; }
- }
- [MonoTODO]
- public virtual string DisplayName {
- get { return englishName; }
- }
- public virtual string EnglishName {
- get { return englishName; }
- }
- public virtual bool IsMetric {
- get {
- switch (iso2Name) {
- case "US":
- case "UK":
- return false;
- default:
- return true;
- }
- }
- }
- public virtual string ISOCurrencySymbol {
- get { return isoCurrencySymbol; }
- }
- #if NET_2_0
- [MonoTODO]
- [System.Runtime.InteropServices.ComVisible(false)]
- public virtual string NativeName {
- get { return DisplayName; }
- }
- [MonoTODO]
- public virtual string CurrencyNativeName {
- get { throw new NotImplementedException (); }
- }
- #endif
- public virtual string Name {
- get { return iso2Name; }
- }
- public virtual string ThreeLetterISORegionName {
- get { return iso3Name; }
- }
- public virtual string ThreeLetterWindowsRegionName {
- get { return win3Name; }
- }
-
- public virtual string TwoLetterISORegionName {
- get { return iso2Name; }
- }
- //
- // methods
- #if NET_2_0
- #else
- public override bool Equals (object value)
- {
- RegionInfo other = value as RegionInfo;
- return other != null && regionId == other.regionId;
- }
- public override int GetHashCode () {
- return regionId;
- }
- #endif
- public override string ToString ()
- {
- return Name;
- }
- }
- }
|