public void InsertNewKeyValueAt(int i, ushort key, Container value) { ExtendArray(1); Array.Copy(keys, i, keys, i + 1, Size - i); keys[i] = key; Array.Copy(values, i, values, i + 1, Size - i); values[i] = value; Size++; }
/// <summary> /// Adds the specified value to the current bitmap /// </summary> /// <param name="x">Value to be added</param> public void Add(int x) { ushort highBits = Utility.GetHighBits(x); int containerIndex = containers.GetIndex(highBits); if (containerIndex >= 0) { // a container exists at this index already. // find the right container, get the low order bits to add to the container and add them containers.SetContainerAtIndex(containerIndex, containers.GetContainerAtIndex(containerIndex).Add(Utility.GetLowBits(x))); } else { // no container exists for this index // create a new ArrayContainer, since it will only hold one integer to start // get the low order bits and att to the newly created container // add the newly created container to the array of containers ArrayContainer ac = new ArrayContainer(); containers.InsertNewKeyValueAt(-containerIndex - 1, highBits, ac.Add(Utility.GetLowBits(x))); } }