Rhino.UintMap.FindIndex C# (CSharp) Method

FindIndex() private method

private FindIndex ( int key ) : int
key int
return int
		private int FindIndex(int key)
		{
			int[] keys = this.keys;
			if (keys != null)
			{
				int fraction = key * A;
				int index = (int)(((uint)fraction) >> (32 - power));
				int entry = keys[index];
				if (entry == key)
				{
					return index;
				}
				if (entry != EMPTY)
				{
					// Search in table after first failed attempt
					int mask = (1 << power) - 1;
					int step = TableLookupStep(fraction, mask, power);
					int n = 0;
					do
					{
						index = (index + step) & mask;
						entry = keys[index];
						if (entry == key)
						{
							return index;
						}
					}
					while (entry != EMPTY);
				}
			}
			return -1;
		}