Пример #1
0
        /// <summary>
        /// copies the hash table to the specified array
        /// </summary>
        private void CopyHashTableTo(LongHashMapEntry[] par1ArrayOfLongHashMapEntry)
        {
            LongHashMapEntry[] alonghashmapentry = HashArray;
            int i = par1ArrayOfLongHashMapEntry.Length;

            for (int j = 0; j < alonghashmapentry.Length; j++)
            {
                LongHashMapEntry longhashmapentry = alonghashmapentry[j];

                if (longhashmapentry == null)
                {
                    continue;
                }

                alonghashmapentry[j] = null;

                do
                {
                    LongHashMapEntry longhashmapentry1 = longhashmapentry.NextEntry;
                    int k = GetHashIndex(longhashmapentry.Hash, i);
                    longhashmapentry.NextEntry     = par1ArrayOfLongHashMapEntry[k];
                    par1ArrayOfLongHashMapEntry[k] = longhashmapentry;
                    longhashmapentry = longhashmapentry1;
                }while (longhashmapentry != null);
            }
        }
Пример #2
0
        /// <summary>
        /// removes the key from the hash linked list
        /// </summary>
        LongHashMapEntry RemoveKey(long par1)
        {
            int i = GetHashedKey(par1);
            int j = GetHashIndex(i, HashArray.Length);
            LongHashMapEntry longhashmapentry = HashArray[j];
            LongHashMapEntry longhashmapentry1;
            LongHashMapEntry longhashmapentry2;

            for (longhashmapentry1 = longhashmapentry; longhashmapentry1 != null; longhashmapentry1 = longhashmapentry2)
            {
                longhashmapentry2 = longhashmapentry1.NextEntry;

                if (longhashmapentry1.Key == par1)
                {
                    ModCount++;
                    NumHashElements--;

                    if (longhashmapentry == longhashmapentry1)
                    {
                        HashArray[j] = longhashmapentry2;
                    }
                    else
                    {
                        longhashmapentry.NextEntry = longhashmapentry2;
                    }

                    return(longhashmapentry1);
                }

                longhashmapentry = longhashmapentry1;
            }

            return(longhashmapentry1);
        }
Пример #3
0
 public LongHashMapEntry(int par1, long par2, object par4Obj, LongHashMapEntry par5LongHashMapEntry)
 {
     Value     = par4Obj;
     NextEntry = par5LongHashMapEntry;
     Key       = par2;
     Hash      = par1;
 }
Пример #4
0
        /// <summary>
        /// creates the key in the hash table
        /// </summary>
        private void CreateKey(int par1, long par2, object par4Obj, int par5)
        {
            LongHashMapEntry longhashmapentry = HashArray[par5];

            HashArray[par5] = new LongHashMapEntry(par1, par2, par4Obj, longhashmapentry);

            if (NumHashElements++ >= Capacity)
            {
                ResizeTable(2 * HashArray.Length);
            }
        }
Пример #5
0
        LongHashMapEntry GetEntry(long par1)
        {
            int i = GetHashedKey(par1);

            for (LongHashMapEntry longhashmapentry = HashArray[GetHashIndex(i, HashArray.Length)]; longhashmapentry != null; longhashmapentry = longhashmapentry.NextEntry)
            {
                if (longhashmapentry.Key == par1)
                {
                    return(longhashmapentry);
                }
            }

            return(null);
        }
Пример #6
0
        /// <summary>
        /// get the value from the map given the key
        /// </summary>
        public virtual object GetValueByKey(long par1)
        {
            int i = GetHashedKey(par1);

            for (LongHashMapEntry longhashmapentry = HashArray[GetHashIndex(i, HashArray.Length)]; longhashmapentry != null; longhashmapentry = longhashmapentry.NextEntry)
            {
                if (longhashmapentry.Key == par1)
                {
                    return(longhashmapentry.Value);
                }
            }

            return(null);
        }
Пример #7
0
        /// <summary>
        /// add the key value pair to the list
        /// </summary>
        public virtual void Add(long par1, object par3Obj)
        {
            int i = GetHashedKey(par1);
            int j = GetHashIndex(i, HashArray.Length);

            for (LongHashMapEntry longhashmapentry = HashArray[j]; longhashmapentry != null; longhashmapentry = longhashmapentry.NextEntry)
            {
                if (longhashmapentry.Key == par1)
                {
                    longhashmapentry.Value = par3Obj;
                }
            }

            ModCount++;
            CreateKey(i, par1, par3Obj, j);
        }
Пример #8
0
        /// <summary>
        /// resizes the table
        /// </summary>
        private void ResizeTable(int par1)
        {
            LongHashMapEntry[] alonghashmapentry = HashArray;
            int i = alonghashmapentry.Length;

            if (i == 0x40000000)
            {
                Capacity = 0x7fffffff;
                return;
            }
            else
            {
                LongHashMapEntry[] alonghashmapentry1 = new LongHashMapEntry[par1];
                CopyHashTableTo(alonghashmapentry1);
                HashArray = alonghashmapentry1;
                Capacity  = (int)((float)par1 * PercentUseable);
                return;
            }
        }
Пример #9
0
        public bool Equals(object par1Obj)
        {
            if (!(par1Obj is LongHashMapEntry))
            {
                return(false);
            }

            LongHashMapEntry longhashmapentry = (LongHashMapEntry)par1Obj;
            long?            long1            = Convert.ToInt64(GetKey());
            long?            long2            = Convert.ToInt64(longhashmapentry.GetKey());

            if (long1 == long2 || long1 != null && long1.Equals(long2))
            {
                object obj  = GetValue();
                object obj1 = longhashmapentry.GetValue();

                if (obj == obj1 || obj != null && obj.Equals(obj1))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #10
0
        /// <summary>
        /// calls the removeKey method and returns removed object
        /// </summary>
        public virtual object Remove(long par1)
        {
            LongHashMapEntry longhashmapentry = RemoveKey(par1);

            return(longhashmapentry != null ? longhashmapentry.Value : null);
        }