<?xml version="1.0"?>
<doc>
    <assembly>
        <name>PaintDotNet.Collections</name>
    </assembly>
    <members>
        <member name="M:PaintDotNet.Collections.ConcurrentDequeDictionary`2.EnqueueOrUpdate(`0,`1,System.Func{`0,`1,`1},PaintDotNet.Collections.QueueSide)">
            <summary>
            Enqueues a key with the given value, or updates the key with a new value computed from its current value.
            </summary>
            <returns>The new value for the key. This will either be enqueueValue (if the key was absent), or the result of updateValueFactory (if the key was present)</returns>
        </member>
        <member name="M:PaintDotNet.Collections.ConcurrentDequeDictionary`2.TryUpdate(`0,`1)">
            <summary>
            Updates the value for the specified key if it's already in the queue.
            </summary>
            <returns>true if the value was updated, false if the key was not in the queue</returns>
        </member>
        <member name="M:PaintDotNet.Collections.ConcurrentDequeDictionary`2.TryUpdate(`0,`1,`1)">
            <summary>
            Compares the existing value for the specified key with a specified value, and if they are equal, updates the key with a third value.
            </summary>
            <returns>true if the key's value was equal to comparisonValue and replaced with newValue; otherwise, false</returns>
        </member>
        <member name="T:PaintDotNet.Collections.Deque`1">
            <summary>
            A double-ended queue.
            </summary>
            <remarks>
            Based on a Reflector disassembly of System.Collections.Queue`1.
            </remarks>
        </member>
        <member name="T:PaintDotNet.Collections.DictionarySlim`2">
             <summary>
             A lightweight Dictionary with three principal differences compared to <see cref="T:System.Collections.Generic.Dictionary`2"/>
            
             1) It is possible to do "get or add" in a single lookup using <see cref="M:PaintDotNet.Collections.DictionarySlim`2.GetOrAddValueRef(`0)"/>. For
             values that are value types, this also saves a copy of the value.
             2) It assumes it is cheap to equate values.
             3) It assumes the keys implement <see cref="T:System.IEquatable`1"/> or else Equals() and they are cheap and sufficient.
             </summary>
             <remarks>
             1) This avoids having to do separate lookups (<see cref="M:System.Collections.Generic.Dictionary`2.TryGetValue(`0,`1@)"/>
             followed by <see cref="M:System.Collections.Generic.Dictionary`2.Add(`0,`1)"/>.
             There is not currently an API exposed to get a value by ref without adding if the key is not present.
             2) This means it can save space by not storing hash codes.
             3) This means it can avoid storing a comparer, and avoid the likely virtual call to a comparer.
             </remarks>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.#ctor">
            <summary>
            Construct with default capacity.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.#ctor(System.Int32)">
            <summary>
            Construct with at least the specified capacity for
            entries before resizing must occur.
            </summary>
            <param name="capacity">Requested minimum capacity</param>
        </member>
        <member name="P:PaintDotNet.Collections.DictionarySlim`2.Count">
            <summary>
            Count of entries in the dictionary.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.Clear">
            <summary>
            Clears the dictionary. Note that this invalidates any active enumerators.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.ContainsKey(`0)">
            <summary>
            Looks for the specified key in the dictionary.
            </summary>
            <param name="key">Key to look for</param>
            <returns>true if the key is present, otherwise false</returns>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.TryGetValue(`0,`1@)">
            <summary>
            Gets the value if present for the specified key.
            </summary>
            <param name="key">Key to look for</param>
            <param name="value">Value found, otherwise default(TValue)</param>
            <returns>true if the key is present, otherwise false</returns>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.Remove(`0)">
            <summary>
            Removes the entry if present with the specified key.
            </summary>
            <param name="key">Key to look for</param>
            <returns>true if the key is present, false if it is not</returns>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.GetOrAddValueRef(`0)">
            <summary>
            Gets the value for the specified key, or, if the key is not present,
            adds an entry and returns the value by ref. This makes it possible to
            add or update a value in a single look up operation.
            </summary>
            <param name="key">Key to look for</param>
            <returns>Reference to the new or existing value</returns>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.GetEnumerator">
            <summary>
            Gets an enumerator over the dictionary
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{TKey,TValue}}#GetEnumerator">
            <summary>
            Gets an enumerator over the dictionary
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Gets an enumerator over the dictionary
            </summary>
        </member>
        <member name="T:PaintDotNet.Collections.DictionarySlim`2.Enumerator">
            <summary>
            Enumerator
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.Enumerator.MoveNext">
            <summary>
            Move to next
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.DictionarySlim`2.Enumerator.Current">
            <summary>
            Get current value
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.DictionarySlim`2.Enumerator.Dispose">
            <summary>
            Dispose the enumerator
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IListSnapshot`1.Version">
            <summary>
            Gets the version of the list that this snapshot represents. This value is
            incremented when modifications are made, and can be used to compare two
            snapshots for their age.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IListSnapshot`1.IsFromSameSource(PaintDotNet.Collections.IListSnapshot{`0})">
            <summary>
            Gets a flag indicating whether this snapshot was taken from the same source as the other snapshot.
            If two snapshots are from different source, they cannot be compared.
            </summary>
        </member>
        <member name="T:PaintDotNet.Collections.IReadOnlyWetList`1">
            <summary>
            Represents a strongly-typed list separated into two portions: dry and wet. The dry portion is at
            the beginning of the list, and the wet portion is at the end.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IReadOnlyWetList`1.GetSnapshot">
            <summary>
            Gets a snapshot of the whole list.
            </summary>
        </member>
        <member name="T:PaintDotNet.Collections.IWetListSnapshot`1">
            <summary>
            Represents a snapshot of an IReadOnlyWetList&lt;T&gt;. Instances of objects that
            implement this interface are immutable and thread-safe.
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IWetListSnapshot`1.WetStartIndex">
            <summary>
            Gets the index that marks the beginning of wet elements. If there are no wet
            elements, this will be equal to Count.
            </summary>
        </member>
        <member name="T:PaintDotNet.Collections.IWetList`1">
            <summary>
            Represents a strongly-typed list separated into two portions: dry and wet. The dry portion is at
            the beginning of the list, and the wet portion is at the end.
            The dry portion of the list may be appended to when the wet portion of the list is empty. The wet
            portion of the list may also be "dried," which will move it to the end of the dry portion of the
            list. Items from the dry portion of the list cannot be removed or modified; it is append-only.
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IWetList`1.Count">
            <summary>
            Gets the total number of items in the list.
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IWetList`1.WetStartIndex">
            <summary>
            Gets the index that marks the beginning of wet elements. If there are no wet
            elements, this will be equal to Count.
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IWetList`1.DryItems">
            <summary>
            Gets a read-only view of the dry portion of the list. This object reference will stay
            up-to-date with modifications to the list. The end of this list maps to the WetStartIndex.
            </summary>
        </member>
        <member name="P:PaintDotNet.Collections.IWetList`1.WetItems">
            <summary>
            Gets a read-only view of the wet portion of the list. This object reference will stay
            up-to-date with modifications to the list. The first index of this list maps to
            WetStartIndex.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.AddDryItem(`0)">
            <summary>
            Adds an item to the end of the dry portion of the list. This is only permitted when the wet portion of the list is empty.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.AddDryItems(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Adds items to the end of the dry portion of the list. This is only permitted when the wet portion of the list is empty.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.AddWetItem(`0)">
            <summary>
            Adds an item to the end of the wet portion of the list.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.AddWetItems(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Adds items to the end of the wet portion of the list.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.ClearWetItems">
            <summary>
            Clears the wet portion of the list.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.DehydrateWetItems">
            <summary>
            &quot;Dries&quot; the wet items by moving them to the end of the dry portion of the list.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.RemoveWetItemAt(System.Int32)">
            <summary>
            Removes a wet item from the list. The index is bounded by the range of the whole list,
            and must be equal to or greater than WetStartIndex.
            </summary>
        </member>
        <member name="M:PaintDotNet.Collections.IWetList`1.RemoveWetItemsRange(System.Int32,System.Int32)">
            <summary>
            Removes a range of wet items from the list. The startIndex is bounded by the range of
            the whole list, and must be equal to or greater than WetStartIndex.
            </summary>
        </member>
        <member name="T:PaintDotNet.Collections.SafeConcurrentBag`1">
            <summary>
            A version of ConcurrentBag&lt;T&gt; that disposes the contained items when
            the collection is cleared or finalized. Only value types are permitted, so
            this is intended to be used for lightweight wrappers for native resources.
            </summary>
        </member>
        <member name="T:PaintDotNet.Interop.NativeAlloc">
            <summary>
            Wraps an allocation made with either HeapAlloc or VirtualAlloc.
            </summary>
        </member>
        <member name="T:PaintDotNet.Interop.NativeAlloc`1">
            <summary>
            Wraps an allocation made with either HeapAlloc or VirtualAlloc.
            </summary>
        </member>
    </members>
</doc>
