diff options
author | Treeki <treeki@gmail.com> | 2011-02-04 15:40:12 +0100 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2011-02-04 15:40:12 +0100 |
commit | db8fc350b2bffda63d27797bfe7ae4afb4af327e (patch) | |
tree | a0a89cd83615e7794d9507d10c329e30c4226670 /NW4RTools/Util/IOrderedDictionary.cs | |
download | nw4rtools-db8fc350b2bffda63d27797bfe7ae4afb4af327e.tar.gz nw4rtools-db8fc350b2bffda63d27797bfe7ae4afb4af327e.zip |
Initial commit of NW4RTools.
Supports BRRES reading for: Model Bytecode, Model Nodes, Model Vertex Data,
and incomplete Materials. Writing is completely unimplemented so far.
Diffstat (limited to 'NW4RTools/Util/IOrderedDictionary.cs')
-rw-r--r-- | NW4RTools/Util/IOrderedDictionary.cs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/NW4RTools/Util/IOrderedDictionary.cs b/NW4RTools/Util/IOrderedDictionary.cs new file mode 100644 index 0000000..a574c7c --- /dev/null +++ b/NW4RTools/Util/IOrderedDictionary.cs @@ -0,0 +1,59 @@ +using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+
+// From http://www.codeproject.com/KB/recipes/GenericOrderedDictionary.aspx
+
+namespace NW4RTools.Util
+{
+ /// <summary>
+ /// Represents a generic collection of key/value pairs that are ordered independently of the key and value.
+ /// </summary>
+ /// <typeparam name="TKey">The type of the keys in the dictionary</typeparam>
+ /// <typeparam name="TValue">The type of the values in the dictionary</typeparam>
+ public interface IOrderedDictionary<TKey, TValue> : IOrderedDictionary, IDictionary<TKey, TValue>
+ {
+ /// <summary>
+ /// Adds an entry with the specified key and value into the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> collection with the lowest available index.
+ /// </summary>
+ /// <param name="key">The key of the entry to add.</param>
+ /// <param name="value">The value of the entry to add.</param>
+ /// <returns>The index of the newly added entry</returns>
+ /// <remarks>
+ /// <para>You can also use the <see cref="P:System.Collections.Generic.IDictionary{TKey,TValue}.Item(TKey)"/> property to add new elements by setting the value of a key that does not exist in the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> collection; however, if the specified key already exists in the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see>, setting the <see cref="P:Item(TKey)"/> property overwrites the old value. In contrast, the <see cref="M:Add"/> method does not modify existing elements.</para></remarks>
+ /// <exception cref="ArgumentException">An element with the same key already exists in the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see></exception>
+ /// <exception cref="NotSupportedException">The <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> is read-only.<br/>
+ /// -or-<br/>
+ /// The <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> has a fized size.</exception>
+ new int Add(TKey key, TValue value);
+
+ /// <summary>
+ /// Inserts a new entry into the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> collection with the specified key and value at the specified index.
+ /// </summary>
+ /// <param name="index">The zero-based index at which the element should be inserted.</param>
+ /// <param name="key">The key of the entry to add.</param>
+ /// <param name="value">The value of the entry to add. The value can be <null/> if the type of the values in the dictionary is a reference type.</param>
+ /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than 0.<br/>
+ /// -or-<br/>
+ /// <paramref name="index"/> is greater than <see cref="System.Collections.ICollection.Count"/>.</exception>
+ /// <exception cref="ArgumentException">An element with the same key already exists in the <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see>.</exception>
+ /// <exception cref="NotSupportedException">The <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> is read-only.<br/>
+ /// -or-<br/>
+ /// The <see cref="IOrderedDictionary{TKey,TValue}">IOrderedDictionary<TKey,TValue></see> has a fized size.</exception>
+ void Insert(int index, TKey key, TValue value);
+
+ /// <summary>
+ /// Gets or sets the value at the specified index.
+ /// </summary>
+ /// <param name="index">The zero-based index of the value to get or set.</param>
+ /// <value>The value of the item at the specified index.</value>
+ /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than 0.<br/>
+ /// -or-<br/>
+ /// <paramref name="index"/> is equal to or greater than <see cref="System.Collections.ICollection.Count"/>.</exception>
+ new TValue this[int index]
+ {
+ get;
+ set;
+ }
+ }
+}
|