Exemple #1
0
 /// <summary>
 /// Deletes given <paramref name="node"/> from deque.
 /// </summary>
 public void Delete(Node <T> node)
 {
     node.ThrowIfArgumentNull(nameof(node));
     if (node.owner != this)
     {
         throw new InvalidOperationException("Node does not belong to the deque.");
     }
     Ex.ThrowIfEmpty(IsEmpty(), "Deque is empty.");
     count--;
     node.owner = null;
     if (node == head && node == tail)
     {
         head = tail = null;
     }
     else if (node == head)
     {
         head      = head.next;
         node.next = head.prev = null;
     }
     else if (node == tail)
     {
         tail      = tail.prev;
         tail.next = node.prev = null;
     }
     else
     {
         node.prev.next = node.next;
         node.next.prev = node.prev;
         node.next      = node.prev = null;
     }
 }
 /// <summary>
 /// Throws exception if <paramref name="x"/> is out of range (uint).
 /// </summary>
 /// <param name="x">Input.</param>
 /// <param name="exMessage">Exception message.</param>
 /// <param name="minRange">Min range value.</param>
 /// <param name="maxRange">Max range value.</param>
 /// <returns>Input.</returns>
 public static uint ThrowIfArgumentOutOfRange(this uint x, string exMessage = "",
                                              uint minRange = 0, uint maxRange = uint.MaxValue)
 {
     Ex.ThrowIfArgumentOutOfRange(x <minRange || x> maxRange,
                                  exMessage);
     return(x);
 }
        /// <summary>
        /// Dequeues head from hashqueue.
        /// </summary>
        public T Dequeue()
        {
            Ex.ThrowIfEmpty(IsEmpty(), "HashQueue is empty.");
            var x = dq.Dequeue();

            DeleteFromMap(x);
            return(x);
        }
 /// <summary>
 /// Deletes given <paramref name="x"/> from hashqueue.
 /// Returns true if successful.
 /// </summary>
 public bool Delete(T x)
 {
     Ex.ThrowIfEmpty(IsEmpty(), "HashQueue is empty.");
     x.ThrowIfArgumentNull(nameof(x));
     if (!Has(x))
     {
         return(false);
     }
     dq.Delete(DeleteFromMap(x));
     return(true);
 }
Exemple #5
0
        /// <summary>
        /// Dequeues head from deque.
        /// </summary>
        public T Dequeue()
        {
            Ex.ThrowIfEmpty(IsEmpty(), "Deque is empty.");
            count--;
            var node = head;

            node.owner = null;
            if (head == tail)
            {
                head = tail = null;
            }
            else
            {
                head      = head.next;
                node.next = head.prev = null;
            }
            return(node.Value);
        }
Exemple #6
0
 /// <summary>
 /// Toggles <paramref name="n"/>.
 /// </summary>
 public void Toggle(int n)
 {
     Ex.ThrowIfArgumentOutOfRange(!(0 <= n && n <= Max), nameof(n));
     Toggle((uint)n);
 }
Exemple #7
0
 /// <summary>
 /// Removes <paramref name="n"/>.
 /// </summary>
 /// <returns>Returns true if removed else false.</returns>
 public bool Remove(int n)
 {
     Ex.ThrowIfArgumentOutOfRange(!(0 <= n && n <= Max), nameof(n));
     return(Remove((uint)n));
 }
 /// <summary>
 /// Peeks tail of hashqueue.
 /// </summary>
 public T PeekTail()
 {
     Ex.ThrowIfEmpty(IsEmpty(), "HashQueue is empty.");
     return(dq.PeekTail());
 }
Exemple #9
0
 /// <summary>
 /// Peeks tail of deque.
 /// </summary>
 public T PeekTail()
 {
     Ex.ThrowIfEmpty(IsEmpty(), "Deque is empty.");
     return(tail.Value);
 }
Exemple #10
0
 /// <summary>
 /// Peeks head of deque.
 /// </summary>
 public T Peek()
 {
     Ex.ThrowIfEmpty(IsEmpty(), "Deque is empty.");
     return(head.Value);
 }
 /// <summary>
 /// Throws exception if the string argument is null or empty.
 /// </summary>
 /// <param name="s">Input.</param>
 /// <param name="exMessage">Exception message.</param>
 /// <returns>Input.</returns>
 public static string ThrowIfNullOrEmptyArgument(this string s, string exMessage = "")
 {
     Ex.ThrowIfArgumentNull(s == null, exMessage);
     Ex.ThrowIfEmpty(s.Length == 0, exMessage);
     return(s);
 }
 /// <summary>
 /// Throws exception if <paramref name="t"/> argument is null.
 /// </summary>
 /// <param name="t">Input.</param>
 /// <param name="exMessage">Exception message.</param>
 /// <returns>Input.</returns>
 public static T ThrowIfArgumentNull <T>(this T t, string exMessage = "")
 {
     Ex.ThrowIfArgumentNull(t == null, exMessage);
     return(t);
 }
 /// <summary>
 /// Throws exception if the string is null or whitespace.
 /// </summary>
 /// <param name="s">Input.</param>
 /// <param name="exMessage">Exception message.</param>
 /// <returns>Input.</returns>
 public static string ThrowIfNullOrWhiteSpace(this string s, string exMessage = "")
 {
     Ex.ThrowIfNull(s == null, exMessage);
     Ex.ThrowIfEmpty(s.Trim().Length == 0, exMessage);
     return(s);
 }