예제 #1
0
 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!");
         }
     }
 }
예제 #2
0
            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);
            }
예제 #3
0
        private T Get(int index)
        {
            var itemIndex = Keys.BinarySearch(index);

            if (itemIndex >= 0)
            {
                return(Values[itemIndex]);
            }
            else
            {
                return(default(T));
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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);
        }