Click here to Skip to main content
15,886,873 members
Articles / Programming Languages / C#

A .NET State Machine Toolkit - Part III

Rate me:
Please Sign up or sign in to vote.
4.91/5 (43 votes)
26 Oct 2006CPOL11 min read 224.1K   1.2K   135  
Using code generation with the .NET state machine toolkit.
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>LSCollections</name>
    </assembly>
    <members>
        <member name="T:LSCollections.Immutable.AvlEnumerator">
            <summary>
            Provides functionality for iterating over an AVL tree.
            </summary> 
        </member>
        <member name="M:LSCollections.Immutable.AvlEnumerator.#ctor(LSCollections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the AvlEnumerator class.
            </summary>
            <param name="root">
            The root of the AVL tree to iterate over.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.AvlEnumerator.#ctor(LSCollections.Immutable.IAvlNode,System.Int32)">
            <summary>
            Initializes a new instance of the AvlEnumerator class.
            </summary>
            <param name="root">
            The root of the AVL tree to iterate over.
            </param>
            <param name="count">
            The number of nodes in the tree.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.AvlEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the AVL tree.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.AvlEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the AVL tree.
            </summary>
            <returns>
            <b>true</b> if the enumerator was successfully advanced to the 
            next element; <b>false</b> if the enumerator has passed the end 
            of the collection.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.AvlEnumerator.Current">
            <summary>
            Gets the current element in the AVL tree.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element in the AVL
            tree or after the last element.
            </exception>
        </member>
        <member name="T:LSCollections.Immutable.AvlNode">
            <summary>
            Represents a node in an AVL tree.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.IAvlNode">
            <summary>
            Represents the functionality and properties of AVL nodes.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.IAvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.IAvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.IAvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.IAvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.AvlNode.#ctor(System.Object,LSCollections.Immutable.IAvlNode,LSCollections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the AvlNode class with the specified 
            data and left and right children.
            </summary>
            <param name="data">
            The data for the node.
            </param>
            <param name="leftChild">
            The left child.
            </param>
            <param name="rightChild">
            The right child.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.AvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.AvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.AvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.AvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.NullAvlNode">
            <summary>
            Represents a null AVL node.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.NullAvlNode.Remove">
            <summary>
            Removes the current node from the AVL tree.
            </summary>
            <returns>
            The node to in the tree to replace the current node.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.NullAvlNode.Balance">
            <summary>
            Balances the subtree represented by the node.
            </summary>
            <returns>
            The root node of the balanced subtree.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.NullAvlNode.IsBalanced">
            <summary>
            Indicates whether or not the subtree the node represents is in 
            balance.
            </summary>
            <returns>
            <b>true</b> if the subtree is in balance; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.BalanceFactor">
            <summary>
            Gets the balance factor of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.Count">
            <summary>
            Gets the number of nodes in the subtree.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.Data">
            <summary>
            Gets the node's data.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.Height">
            <summary>
            Gets the height of the subtree the node represents.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.LeftChild">
            <summary>
            Gets the node's left child.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.NullAvlNode.RightChild">
            <summary>
            Gets the node's right child.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.RalEnumerator">
            <summary>
            Provides functionality for enumerating a RandomAccessList.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.RalEnumerator.#ctor(LSCollections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the Enumerator with the specified 
            head of the list and the number of nodes in the list.
            </summary>
            <param name="head">
            The head of the list.
            </param>
            <param name="count">
            The number of nodes in the list.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.RalEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the random access list.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.RalEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element in the random access 
            list.
            </summary>
            <returns>
            <b>true</b> if the enumerator was successfully advanced to the 
            next element; <b>false</b> if the enumerator has passed the end 
            of the collection.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.RalEnumerator.Current">
            <summary>
            Gets the current element in the random access list.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element in the 
            random access list or after the last element.
            </exception>
        </member>
        <member name="T:LSCollections.Immutable.RalTopNode">
            <summary>
            Represents the top nodes in a RandomAccessList.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.RalTopNode.#ctor(LSCollections.Immutable.RalTreeNode,LSCollections.Immutable.RalTopNode)">
            <summary>
            Initializes a new instance of the RalTopNode with the specified 
            root of the tree this node represents and the next top node in the
            list.
            </summary>
            <param name="root">
            The root node of the tree this top node represents.
            </param>
            <param name="nextNode">
            The next top node in the list.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.RalTopNode.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified element in the random access list.
            </summary>
            <param name="index">
            An integer that represents the position of the random access list 
            element to get. 
            </param>
            <returns>
            The value at the specified position in the random access list.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.RalTopNode.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current random access list to the 
            specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the random access list  
            element to set. 
            </param>
            <returns>
            A new random access list top node with the element at the specified 
            position set to the specified value.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.RalTopNode.Root">
            <summary>
            Gets the root node represented by the top node.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.RalTopNode.NextNode">
            <summary>
            Gets the next top node in the random access list.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.RalTreeNode">
            <summary>
            Represents subtree nodes within random access lists.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.RalTreeNode.#ctor(System.Object,LSCollections.Immutable.RalTreeNode,LSCollections.Immutable.RalTreeNode)">
            <summary>
            Initializes an instance of the RandomAccessListNode with the
            specified value, left child, and right child.
            </summary>
            <param name="value">
            The value to store in the node.
            </param>
            <param name="leftChild">
            The left child.
            </param>
            <param name="rightChild">
            The right child.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.RalTreeNode.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified element in the random access list
            subtree.
            </summary>
            <param name="index">
            An integer that represents the position of the random access list 
            subtree element to get. 
            </param>
            <returns>
            The value at the specified position in the random access list
            subtree.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.RalTreeNode.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current random access list 
            subtree to the specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the random access list  
            subtree element to set. 
            </param>
            <returns>
            A new random access list tree node with the element at the specified 
            position set to the specified value.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.RalTreeNode.Count">
            <summary>
            Gets the number of nodes in the tree.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.RalTreeNode.LeftChild">
            <summary>
            Gets the left child.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.RalTreeNode.RightChild">
            <summary>
            Gets the right child.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.RalTreeNode.Value">
            <summary>
            Gets the value represented by this node.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.Array">
            <summary>
            Represents an array data structure.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.Array.#ctor(System.Int32)">
            <summary>
            Initialize an instance of the Array class with the specified array 
            length.
            </summary>
            <param name="length">
            The length of the array.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.Array.#ctor(LSCollections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the Array class with the specified 
            head of the random access list and the length of the array.
            </summary>
            <param name="head">
            The head of the random access list.
            </param>
            <param name="length">
            The length of the array.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.Array.GetValue(System.Int32)">
            <summary>
            Gets the value of the specified element in the current Array. 
            </summary>
            <param name="index">
            An integer that represents the position of the Array element to 
            get. 
            </param>
            <returns>
            The value at the specified position in the Array.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current Array.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.Array.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current Array to the specified 
            value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the Array element to set. 
            </param>
            <returns>
            A new array with the element at the specified position set to the 
            specified value.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current Array.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.Array.GetEnumerator">
            <summary>
            Returns an IEnumerator for the Array.
            </summary>
            <returns>
            An IEnumerator for the Array.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.Array.Length">
            <summary>
            Gets an integer that represents the total number of elements in all 
            the dimensions of the Array.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.ArrayList">
            <summary>
            Represents a collection of elements accessible by index and supports
            insertion and deletion.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.#cctor">
            <summary>
            Initializes the ArrayList class.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.#ctor">
            <summary>
            Initializes a new instance of the ArrayList class.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.#ctor(System.Collections.ICollection)">
            <summary>
            Initializes a new instance of the ArrayList class that contains 
            elements copied from the specified collection.
            </summary>
            <param name="collection">
            The ICollection whose elements are copied to the new list. 
            </param>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.#ctor(LSCollections.Immutable.IAvlNode,System.Int32)">
            <summary>
            Initializes a new instance of the ArrayList class with the 
            specified root and count.
            </summary>
            <param name="root">
            The root of the tree.
            </param>
            <param name="count">
            The number of items in the ArrayList.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.Add(System.Object)">
            <summary>
            Adds an object to the end of the ArrayList.
            </summary>
            <param name="value">
            The Object to be added to the end of the ArrayList. 
            </param>
            <returns>
            A new ArrayList object with the specified value added at the end.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.Contains(System.Object)">
            <summary>
            Determines whether an element is in the ArrayList.
            </summary>
            <param name="value">
            The Object to locate in the ArrayList. 
            </param>
            <returns>
            <b>true</b> if item is found in the ArrayList; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.IndexOf(System.Object)">
            <summary>
            Returns the zero-based index of the first occurrence of a value in 
            the ArrayList.
            </summary>
            <param name="value">
            The Object to locate in the ArrayList.
            </param>
            <returns>
            The zero-based index of the first occurrence of value within the 
            ArrayList, if found; otherwise, -1.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.Insert(System.Int32,System.Object)">
            <summary>
            Inserts an element into the ArrayList at the specified index.
            </summary>
            <param name="index">
            The zero-based index at which value should be inserted. 
            </param>
            <param name="value">
            The Object to insert.
            </param>
            <returns>
            A new ArrayList with the specified object inserted at the specified 
            index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is greater than Count.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.Remove(System.Object)">
            <summary>
            Removes the first occurrence of a specified object from the 
            ArrayList.
            </summary>
            <param name="value">
            The Object to remove from the ArrayList. 
            </param>
            <returns>
            A new ArrayList with the first occurrent of the specified object 
            removed.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.RemoveAt(System.Int32)">
            <summary>
            Removes the element at the specified index of the ArrayList.
            </summary>
            <param name="index">
            The zero-based index of the element to remove. 
            </param>
            <returns>
            A new ArrayList with the element at the specified index removed.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified index.
            </summary>
            <param name="index">
            The zero-based index of the element to get.
            </param>
            <returns>
            The value at the specified index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.SetValue(System.Int32,System.Object)">
            <summary>
            Sets the value at the specified index.
            </summary>
            <param name="index">
            The zero-based index of the element to set.
            </param>
            <param name="value">
            The value to set at the specified index.
            </param>
            <returns>
            A new ArrayList with the specified value set at the specified index.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is less than zero or index is equal to or greater than Count.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.ArrayList.GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the ArrayList.
            </summary>
            <returns>
            An IEnumerator that can be used to iterate through the ArrayList.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.ArrayList.Count">
            <summary>
            Gets the number of elements contained in the ArrayList.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.RandomAccessList">
            <summary>
            Implements Chris Okasaki's random access list.
            </summary>
        </member>
        <member name="F:LSCollections.Immutable.RandomAccessList.Empty">
            <summary>
            Represents an empty random access list.
            </summary> 
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.#ctor">
            <summary>
            Initializes a new instance of the RandomAccessList class.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.#ctor(LSCollections.Immutable.RalTopNode,System.Int32)">
            <summary>
            Initializes a new instance of the RandomAccessList class with the
            specified first top node and the number of elements in the list.
            </summary>
            <param name="first">
            The first top node in the list.
            </param>
            <param name="count">
            The number of nodes in the list.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.Cons(System.Object)">
            <summary>
            Prepends a value to the random access list.
            </summary>
            <param name="value">
            The value to prepend to the list.
            </param>
            <returns>
            A new random access list with the specified value prepended to the
            list.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.GetValue(System.Int32)">
            <summary>
            Gets the value at the specified position in the current 
            RandomAccessList.
            </summary>
            <param name="index">
            An integer that represents the position of the RandomAccessList 
            element to get. 
            </param>
            <returns>
            The value at the specified position in the RandomAccessList.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current 
            RandomAccessList.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.SetValue(System.Object,System.Int32)">
            <summary>
            Sets the specified element in the current RandomAccessList to the 
            specified value.
            </summary>
            <param name="value">
            The new value for the specified element. 
            </param>
            <param name="index">
            An integer that represents the position of the RandomAccessList 
            element to set. 
            </param>
            <returns>
            A new RandomAccessList with the element at the specified position 
            set to the specified value.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            index is outside the range of valid indexes for the current 
            RandomAccessList.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.RandomAccessList.GetEnumerator">
            <summary>
            Returns an IEnumerator for the RandomAccessList.
            </summary>
            <returns>
            An IEnumerator for the RandomAccessList.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.RandomAccessList.Count">
            <summary>
            Gets the number of elements in the RandomAccessList.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.RandomAccessList.Head">
            <summary>
            Gets a RandomAccessList with first element of the current 
            RandomAccessList.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the RandomAccessList is empty.
            </exception>
        </member>
        <member name="P:LSCollections.Immutable.RandomAccessList.Tail">
            <summary>
            Gets a RandomAccessList with all but the first element of the
            current RandomAccessList.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            If the RandomAccessList is empty.
            </exception>
        </member>
        <member name="T:LSCollections.Immutable.SortedList">
            <summary>
            Represents a collection of key-and-value pairs that are sorted by the 
            keys and are accessible by key.
            </summary>
        </member>
        <member name="F:LSCollections.Immutable.SortedList.Empty">
            <summary>
            An empty SortedList.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.#ctor">
            <summary>
            Initializes a new instance of the SortedList class that is empty 
            and is sorted according to the IComparable interface implemented by 
            each key added to the SortedList.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.#ctor(System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SortedList class that is empty 
            and is sorted according to the specified IComparer interface.
            </summary>
            <param name="comparer">
            The IComparer implementation to use when comparing keys, or a null 
            reference to use the IComparable implementation of each key. 
            </param>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.#ctor(LSCollections.Immutable.IAvlNode,System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SortedList class with the 
            specified root node and the IComparer interface to use for sorting
            keys.
            </summary>
            <param name="root">
            The root of the AVL tree.
            </param>
            <param name="comparer">
            The IComparer implementation to use when comparing keys, or a null 
            reference to use the IComparable implementation of each key.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.Add(System.Object,System.Object)">
            <summary>
            Adds an element with the specified key and value to the SortedList.
            </summary>
            <param name="key">
            The key of the element to add.
            </param>
            <param name="value">
            The value of the element to add. The value can be a null reference.
            </param>
            <returns>
            A new SortedList with the specified key and value added to the 
            previous SortedList.
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <i>key</i> is a null reference.
            </exception>
            <exception cref="T:System.ArgumentException">
            An element with the specified key already exists in the SortedList,
            or The SortedList is set to use the IComparable interface, and key 
            does not implement the IComparable interface.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.Contains(System.Object)">
            <summary>
            Determines whether the SortedList contains a specific key.
            </summary>
            <param name="key">
            The key to locate in the SortedList. 
            </param>
            <returns>
            <b>true</b> if the SortedList contains an element with the 
            specified <i>key</i>; otherwise, <b>false</b>.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.GetEnumerator">
            <summary>
            Returns an IDictionaryEnumerator that can iterate through the 
            SortedList.
            </summary>
            <returns>
            An IDictionaryEnumerator for the SortedList.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.Remove(System.Object)">
            <summary>
            Removes the element with the specified key from SortedList.
            </summary>
            <param name="key">
            </param>
            <returns>
            The <i>key</i> of the element to remove. 
            </returns>
            <exception cref="T:System.ArgumentNullException">
            <i>key</i> is a null reference.
            </exception>
            <exception cref="T:System.ArgumentException">
            The SortedList is set to use the IComparable interface, and key 
            does not implement the IComparable interface.
            </exception>
        </member>
        <member name="P:LSCollections.Immutable.SortedList.Item(System.Object)">
            <summary>
            Gets the value associated with the specified key.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.SortedList.Count">
            <summary>
            Gets the number of elements contained in the SortedList.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.SortedList.SortedListEnumerator">
            <summary>
            Provides functionality for iterating through a SortedList.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.SortedList.SortedListEnumerator.#ctor(LSCollections.Immutable.IAvlNode)">
            <summary>
            Initializes a new instance of the SortedListEnumerator class 
            with the specified root of the AVL tree to iterate over.
            </summary>
            <param name="root">
            The root of the AVL tree the SortedList uses internally.
            </param>
        </member>
        <member name="T:LSCollections.Immutable.Stack">
            <summary>
            Represents a simple last-in-first-out collection of objects.
            </summary>
        </member>
        <member name="F:LSCollections.Immutable.Stack.Empty">
            <summary>
            An empty Stack.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.Stack.#ctor">
            <summary>
            Initializes a new instance of the Stack class.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.Stack.#ctor(LSCollections.Immutable.Stack.Node,System.Int32)">
            <summary>
            Initializes a new instance of the Stack class with the 
            specified top node and the number of elements in the stack.
            </summary>
            <param name="top">
            The top node in the stack.
            </param>
            <param name="count">
            The number of elements in the stack.
            </param>        
        </member>
        <member name="M:LSCollections.Immutable.Stack.Push(System.Object)">
            <summary>
            Inserts an object at the top of the Stack.
            </summary>
            <param name="obj">
            The Object to push onto the Stack.
            </param>
            <returns>
            A new stack with the specified object on the top of the stack.
            </returns>
        </member>
        <member name="M:LSCollections.Immutable.Stack.Pop">
            <summary>
            Removes the object at the top of the Stack.
            </summary>
            <returns>
            A new stack with top of the previous stack removed.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Stack is empty.
            </exception>
        </member>
        <member name="M:LSCollections.Immutable.Stack.GetEnumerator">
            <summary>
            Returns an IEnumerator for the Stack.
            </summary>
            <returns>
            An IEnumerator for the Stack.
            </returns>
        </member>
        <member name="P:LSCollections.Immutable.Stack.Count">
            <summary>
            Gets the number of elements in the Stack.
            </summary>
        </member>
        <member name="P:LSCollections.Immutable.Stack.Top">
            <summary>
            Gets the top of the stack.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The Stack is empty.
            </exception>
        </member>
        <member name="T:LSCollections.Immutable.Stack.Node">
            <summary>
            Represents a node in the stack.
            </summary>
        </member>
        <member name="T:LSCollections.Immutable.Stack.StackEnumerator">
            <summary>
            Provides functionality for iterating over the Stack class.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.Stack.StackEnumerator.#ctor(LSCollections.Immutable.Stack)">
            <summary>
            Initializes a new instance of the StackEnumerator class with 
            the specified stack to iterate over.
            </summary>
            <param name="owner">
            The Stack to iterate over.
            </param>
        </member>
        <member name="M:LSCollections.Immutable.Stack.StackEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the Stack.
            </summary>
        </member>
        <member name="M:LSCollections.Immutable.Stack.StackEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the Stack.
            </summary>
            <returns></returns>
        </member>
        <member name="P:LSCollections.Immutable.Stack.StackEnumerator.Current">
            <summary>
            Gets the current element in the Stack.
            </summary>
            <exception cref="T:System.InvalidOperationException">
            The enumerator is positioned before the first element of the 
            Stack or after the last element.
            </exception>
        </member>
        <member name="T:LSCollections.Deque">
            <summary>
            Represents a simple double-ended-queue collection of objects.
            </summary>
        </member>
        <member name="M:LSCollections.Deque.#ctor">
            <summary>
            Initializes a new instance of the Deque class.
            </summary>
        </member>
        <member name="M:LSCollections.Deque.#ctor(System.Collections.ICollection)">
            <summary>
            Initializes a new instance of the Deque class that contains 
            elements copied from the specified collection.
            </summary>
            <param name="col">
            The ICollection to copy elements from.
            </param>
        </member>
        <member name="M:LSCollections.Deque.Clear">
            <summary>
            Removes all objects from the Deque.
            </summary>
        </member>
        <member name="M:LSCollections.Deque.Contains(System.Object)">
            <summary>
            Determines whether or not an element is in the Deque.
            </summary>
            <param name="obj">
            The Object to locate in the Deque.
            </param>
            <returns>
            <b>true</b> if <i>obj</i> if found in the Deque; otherwise, 
            <b>false</b>.
            </returns>
        </member>
        <member name="M:LSCollections.Deque.PushFront(System.Object)">
            <summary>
            Inserts an object at the front of the Deque.
            </summary>
            <param name="obj">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:LSCollections.Deque.PushBack(System.Object)">
            <summary>
            Inserts an object at the back of the Deque.
            </summary>
            <param name="obj">
            The object to push onto the deque;
            </param>
        </member>
        <member name="M:LSCollections.Deque.PopFront">
            <summary>
            Removes and returns the object at the front of the Deque.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:LSCollections.Deque.PopBack">
            <summary>
            Removes and returns the object at the back of the Deque.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:LSCollections.Deque.PeekFront">
            <summary>
            Returns the object at the front of the Deque without removing it.
            </summary>
            <returns>
            The object at the front of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:LSCollections.Deque.PeekBack">
            <summary>
            Returns the object at the back of the Deque without removing it.
            </summary>
            <returns>
            The object at the back of the Deque.
            </returns>
            <exception cref="T:System.InvalidOperationException">
            The Deque is empty.
            </exception>
        </member>
        <member name="M:LSCollections.Deque.ToArray">
            <summary>
            Copies the Deque to a new array.
            </summary>
            <returns>
            A new array containing copies of the elements of the Deque.
            </returns>
        </member>
        <member name="M:LSCollections.Deque.Synchronized(LSCollections.Deque)">
            <summary>
            Returns a synchronized (thread-safe) wrapper for the Deque.
            </summary>
            <param name="deque">
            The Deque to synchronize.
            </param>
            <returns>
            A synchronized wrapper around the Deque.
            </returns>
        </member>
        <member name="M:LSCollections.Deque.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the Deque elements to an existing one-dimensional Array, 
            starting at the specified array index.
            </summary>
            <param name="array">
            The one-dimensional Array that is the destination of the elements 
            copied from Deque. The Array must have zero-based indexing. 
            </param>
            <param name="index">
            The zero-based index in array at which copying begins. 
            </param>
        </member>
        <member name="M:LSCollections.Deque.GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the Deque.
            </summary>
            <returns>
            An IEnumerator for the Deque.
            </returns>
        </member>
        <member name="M:LSCollections.Deque.Clone">
            <summary>
            Creates a shallow copy of the Deque.
            </summary>
            <returns>
            A shalloe copy of the Deque.
            </returns>
        </member>
        <member name="P:LSCollections.Deque.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the Deque is synchronized 
            (thread-safe).
            </summary>
        </member>
        <member name="P:LSCollections.Deque.Count">
            <summary>
            Gets the number of elements contained in the Deque.
            </summary>
        </member>
        <member name="P:LSCollections.Deque.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the Deque.
            </summary>
        </member>
        <member name="T:LSCollections.SkipList">
            <summary>
            Represents a collection of key-and-value pairs.
            </summary>
            <remarks>
            The SkipList class is an implementation of the IDictionary interface. It 
            is based on the data structure created by William Pugh.
            </remarks> 
        </member>
        <member name="M:LSCollections.SkipList.#cctor">
            <summary>
            Static constructor for intializing the SkipList class.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.#ctor">
            <summary>
            Initializes a new instance of the SkipList class that is empty and 
            is sorted according to the IComparable interface implemented by 
            each key added to the SkipList.
            </summary>
            <remarks>
            Each key must implement the IComparable interface to be capable of 
            comparisons with every other key in the SortedList. The elements 
            are sorted according to the IComparable implementation of each key 
            added to the SkipList.
            </remarks>
        </member>
        <member name="M:LSCollections.SkipList.#ctor(System.Collections.IComparer)">
            <summary>
            Initializes a new instance of the SkipList class that is empty and 
            is sorted according to the specified IComparer interface.
            </summary>
            <param name="comparer">
            The IComparer implementation to use when comparing keys. 
            </param>
            <remarks>
            The elements are sorted according to the specified IComparer 
            implementation. If comparer is a null reference, the IComparable 
            implementation of each key is used; therefore, each key must 
            implement the IComparable interface to be capable of comparisons 
            with every other key in the SkipList.
            </remarks>
        </member>
        <member name="M:LSCollections.SkipList.Finalize">
            <summary>
            Destructor.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.Initialize">
            <summary>
            Initializes the SkipList.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.GetNewLevel">
            <summary>
            Returns a level value for a new SkipList node.
            </summary>
            <returns>
            The level value for a new SkipList node.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.Search(System.Object)">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.Search(System.Object,LSCollections.SkipList.Node@)">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.Search(System.Object,LSCollections.SkipList.Node[])">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.Search(System.Object,LSCollections.SkipList.Node@,LSCollections.SkipList.Node[])">
            <summary>
            Searches for the specified key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.SearchWithComparer(System.Object,LSCollections.SkipList.Node@,LSCollections.SkipList.Node[])">
            <summary>
            Search for the specified key using a comparer.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.SearchWithComparable(System.Object,LSCollections.SkipList.Node@,LSCollections.SkipList.Node[])">
            <summary>
            Search for the specified key using the IComparable interface 
            implemented by each key.
            </summary>
            <param name="key">
            The key to search for.
            </param>
            <param name="curr">
            A SkipList node to hold the results of the search.
            </param>
            <param name="update">
            An array of nodes holding references to the places in the SkipList
            search in which the search dropped down one level.
            </param>
            <returns>
            Returns true if the specified key is in the SkipList.
            </returns>
            <remarks>
            Assumes each key inserted into the SkipList implements the 
            IComparable interface.
            
            If the specified key is in the SkipList, the curr parameter will
            reference the node with the key. If the specified key is not in the
            SkipList, the curr paramater will either hold the node with the 
            first key value greater than the specified key or it will have the
            same value as the header indicating that the search reached the end 
            of the SkipList.
            </remarks>
        </member>
        <member name="M:LSCollections.SkipList.Insert(System.Object,System.Object,LSCollections.SkipList.Node[])">
            <summary>
            Inserts a key/value pair into the SkipList.
            </summary>
            <param name="key">
            The key to insert into the SkipList.
            </param>
            <param name="val">
            The value to insert into the SkipList.
            </param>
            <param name="update">
            An array of nodes holding references to places in the SkipList in 
            which the search for the place to insert the new key/value pair 
            dropped down one level.
            </param>
        </member>
        <member name="M:LSCollections.SkipList.Add(System.Object,System.Object)">
            <summary>
            Adds an element with the provided key and value to the SkipList.
            </summary>
            <param name="key">
            The Object to use as the key of the element to add. 
            </param>
            <param name="value">
            The Object to use as the value of the element to add. 
            </param>
        </member>
        <member name="M:LSCollections.SkipList.Clear">
            <summary>
            Removes all elements from the SkipList.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.Contains(System.Object)">
            <summary>
            Determines whether the SkipList contains an element with the 
            specified key.
            </summary>
            <param name="key">
            The key to locate in the SkipList.
            </param>
            <returns>
            true if the SkipList contains an element with the key; otherwise, 
            false.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.GetEnumerator">
            <summary>
            Returns an IDictionaryEnumerator for the SkipList.
            </summary>
            <returns>
            An IDictionaryEnumerator for the SkipList.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.Remove(System.Object)">
            <summary>
            Removes the element with the specified key from the SkipList.
            </summary>
            <param name="key">
            The key of the element to remove.
            </param>
        </member>
        <member name="M:LSCollections.SkipList.CopyTo(System.Array,System.Int32)">
            <summary>
            Copies the elements of the SkipList to an Array, starting at a 
            particular Array index.
            </summary>
            <param name="array">
            The one-dimensional Array that is the destination of the elements 
            copied from SkipList.
            </param>
            <param name="index">
            The zero-based index in array at which copying begins.
            </param>
        </member>
        <member name="M:LSCollections.SkipList.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that can iterate through the SkipList.
            </summary>
            <returns>
            An IEnumerator that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="P:LSCollections.SkipList.IsFixedSize">
            <summary>
            Gets a value indicating whether the SkipList has a fixed size.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.IsReadOnly">
            <summary>
            Gets a value indicating whether the IDictionary is read-only.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Item(System.Object)">
            <summary>
            Gets or sets the element with the specified key. This is the 
            indexer for the SkipList. 
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Keys">
            <summary>
            Gets an ICollection containing the keys of the SkipList.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Values">
            <summary>
            Gets an ICollection containing the values of the SkipList.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Count">
            <summary>
            Gets the number of elements contained in the SkipList.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.IsSynchronized">
            <summary>
            Gets a value indicating whether access to the SkipList is 
            synchronized (thread-safe).
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.SyncRoot">
            <summary>
            Gets an object that can be used to synchronize access to the 
            SkipList.
            </summary>
        </member>
        <member name="T:LSCollections.SkipList.Node">
            <summary>
            Represents a node in the SkipList.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.Node.#ctor(System.Int32)">
            <summary>
            Initializes an instant of a Node with its node level.
            </summary>
            <param name="level">
            The node level.
            </param>
        </member>
        <member name="M:LSCollections.SkipList.Node.#ctor(System.Int32,System.Object,System.Object)">
            <summary>
            Initializes an instant of a Node with its node level and 
            key/value pair.
            </summary>
            <param name="level">
            The node level.
            </param>
            <param name="key">
            The key for the node.
            </param>
            <param name="val">
            The value for the node.
            </param>
        </member>
        <member name="M:LSCollections.SkipList.Node.Dispose">
            <summary>
            Disposes the Node.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Node.Key">
            <summary>
            Key property.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Node.Value">
            <summary>
            Value property.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.Node.Entry">
            <summary>
            Node dictionary Entry property - contains key/value pair. 
            </summary>
        </member>
        <member name="T:LSCollections.SkipList.SkipListEnumerator">
            <summary>
            Enumerates the elements of a skip list.
            </summary>
        </member>
        <member name="M:LSCollections.SkipList.SkipListEnumerator.#ctor(LSCollections.SkipList)">
            <summary>
            Initializes an instance of a SkipListEnumerator.
            </summary>
            <param name="list"></param>
        </member>
        <member name="M:LSCollections.SkipList.SkipListEnumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the skip list.
            </summary>
            <returns>
            true if the enumerator was successfully advanced to the next 
            element; false if the enumerator has passed the end of the 
            skip list.
            </returns>
        </member>
        <member name="M:LSCollections.SkipList.SkipListEnumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before 
            the first element in the skip list.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.SkipListEnumerator.Entry">
            <summary>
            Gets both the key and the value of the current dictionary 
            entry.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.SkipListEnumerator.Key">
            <summary>
            Gets the key of the current dictionary entry.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.SkipListEnumerator.Value">
            <summary>
            Gets the value of the current dictionary entry.
            </summary>
        </member>
        <member name="P:LSCollections.SkipList.SkipListEnumerator.Current">
            <summary>
            Gets the current element in the skip list.
            </summary>
        </member>
    </members>
</doc>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
Aside from dabbling in BASIC on his old Atari 1040ST years ago, Leslie's programming experience didn't really begin until he discovered the Internet in the late 90s. There he found a treasure trove of information about two of his favorite interests: MIDI and sound synthesis.

After spending a good deal of time calculating formulas he found on the Internet for creating new sounds by hand, he decided that an easier way would be to program the computer to do the work for him. This led him to learn C. He discovered that beyond using programming as a tool for synthesizing sound, he loved programming in and of itself.

Eventually he taught himself C++ and C#, and along the way he immersed himself in the ideas of object oriented programming. Like many of us, he gotten bitten by the design patterns bug and a copy of GOF is never far from his hands.

Now his primary interest is in creating a complete MIDI toolkit using the C# language. He hopes to create something that will become an indispensable tool for those wanting to write MIDI applications for the .NET framework.

Besides programming, his other interests are photography and playing his Les Paul guitars.

Comments and Discussions