コード例 #1
0
        /// <summary>
        /// Dictionary.TryGetValue(string)
        /// </summary>
        internal int FindString(string name)
        {
            if (m_map == null)
            {
                FixedHashTable map = new FixedHashTable(m_size);

                for (int i = 0; i < m_size; i++)
                {
                    map.Add(GetStringHash(i), i);
                }

                m_map = map;
            }

            int hash = StringPool.StableStringHash(name);

            // Search hash table
            for (int slot = m_map.GetFirst(hash); slot >= 0; slot = m_map.GetNext(slot))
            {
                int index = m_map.GetIndex(slot);

                if (IsStringEqual(name, index))
                {
                    return(index);
                }
            }

            return(-1);
        }
コード例 #2
0
 internal StringMap32(StringPool pool, UInt32[] indices) : base(indices.Length)
 {
     m_pool    = pool;
     m_indices = indices;
 }
コード例 #3
0
ファイル: McgModule.cs プロジェクト: tmds/corert
 /// <summary>
 /// Set data for compressed strings
 /// </summary>
 public void SetStringPool(byte[] dictionary, byte[] strings, ushort[] index)
 {
     m_stringPool = new StringPool(dictionary, strings, index);
 }
コード例 #4
0
 internal StringMap32(StringPool pool, UInt32[] indices) : base(indices.Length)
 {
     m_pool = pool;
     m_indices = indices;
 }