private void Set(int index, T value) { if (Keys.Count == 0) { Keys.Add(index); Values.Add(value); } else { var itemIndex = Keys.BinarySearch(index); if (itemIndex >= 0) { Values[itemIndex] = value; } else { Keys.Insert(~itemIndex, index); Values.Insert(~itemIndex, value); } if (Keys.Count != Values.Count) { Console.WriteLine("Break!"); } } }
internal bool TryFindUpperBound(TKey key, IComparer <TKey> comparer, out int index) { int keyIndex = Keys.BinarySearch(key, comparer); if (keyIndex < 0) { index = ~keyIndex; return(false); } index = keyIndex; return(true); }
private T Get(int index) { var itemIndex = Keys.BinarySearch(index); if (itemIndex >= 0) { return(Values[itemIndex]); } else { return(default(T)); } }
public void AddDummyToKey(Word dummy) { var index = Keys.BinarySearch(dummy); if (index < 0) { index = ~index; } if (!KeyDummies.ContainsKey(index)) { KeyDummies[index] = new List <Word>(); } KeyDummies[index].Add(dummy); }
/// <summary> /// Validate the "KeyParam" parameter of a request against our list of valid keys /// </summary> /// <param name="message">The request message</param> /// <returns>True if valid, false otherwise</returns> private bool ValidateKey(HttpRequestMessage message) { // Extract our query params var query = message.RequestUri.ParseQueryString(); if (query == null || query.Count == 0) { return(false); } // Extract our key parameter and validate var key = query[KeyParam]; if (key == null) { return(false); } return(Keys.BinarySearch(key) >= 0); }