System.Globalization.CultureTable.GetDataItemFromCultureID C# (CSharp) Method

GetDataItemFromCultureID() private method

private GetDataItemFromCultureID ( int cultureID, String &actualName ) : int
cultureID int
actualName String
return int
        unsafe internal int GetDataItemFromCultureID(int cultureID, out String actualName)
        {
            BCLDebug.Assert(cultureID!=0,"CultureTable.GetDataItemFromCultureID(): cultureID!=0");

            CultureTableItem cti  = (CultureTableItem)hashByLcid[cultureID];
            if(null != cti &&
               0 != cti.culture) {
                actualName = cti.name;
                return (cti.dataItem);
            }

            int left = 0;
            int right = m_pCultureHeader->numCultureNames - 1;

            while (left <= right) {
                int mid = (left+right)/2;
                int result =  cultureID - this.m_pCultureIDIndex[mid].actualCultureID;
                if (result == 0) {
                    cti = new CultureTableItem();
                    int index = cti.dataItem = m_pCultureIDIndex[mid].dataItemIndex;
                    int culture = cti.culture = cultureID;

                    actualName = cti.name = GetStringPoolString(m_pCultureIDIndex[mid].strOffset);

                    hashByLcid[cultureID] = cti;
                    return (index);
                }
                if (result < 0) {
                    right = mid - 1;
                } else {
                    left = mid + 1;
                }
            }

            actualName = "";
            return (-1);
        }

Usage Example

Esempio n. 1
0
        /// <include file='doc\RegionInfo.uex' path='docs/doc[@for="RegionInfo.RegionInfo1"]/*' />
        public RegionInfo(int culture)
        {
            // Get the culture data item.
            int cultureItem = CultureTable.GetDataItemFromCultureID(CultureInfo.GetLangID(culture));

            if (cultureItem < 0)
            {
                // Not a valid culture ID.
                throw new ArgumentException(Environment.GetResourceString("Argument_CultureNotSupported", culture), "culture");
            }

            if (culture == 0x7F)   //The InvariantCulture has no matching region
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_NoRegionInvariantCulture"));
            }

            //
            // From this culture data item, get the region data item.
            // We do this because several culture ID may map to the same region.
            // For example, 0x1009 (English (Canada)) and 0x0c0c (French (Canada)) all map to
            // the same region "CA" (Canada).
            //
            m_dataItem = CultureTable.GetDefaultInt32Value(cultureItem, CultureTable.IREGIONITEM);
            if (m_dataItem == 0xffff)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_CultureIsNeutral", culture), "culture");
            }
        }
All Usage Examples Of System.Globalization.CultureTable::GetDataItemFromCultureID