<?xml version="1.0"?>
<doc>
    <assembly>
        <name>InABox.Core</name>
    </assembly>
    <members>
        <member name="T:InABox.Core.BaseObject">
            <summary>
                Observable object with INotifyPropertyChanged implemented
            </summary>
        </member>
        <member name="M:InABox.Core.CoreUtils.GetChildren``1(System.Object)">
            <summary>
                Get all the child properties of an object that match a given type
            </summary>
            <typeparam name="T">The class of property to search for</typeparam>
            <param name="parent">The object to search</param>
            <returns>A list of the objects found</returns>
        </member>
        <member name="M:InABox.Core.CoreUtils.GetCollectionsOfType``1(System.Object)">
            <summary>
                Get all list properties of an object that are collections of a given type
            </summary>
            <typeparam name="T">The class of child object to search for</typeparam>
            <param name="parent">The object to search</param>
            <returns>A list of the collections found</returns>
        </member>
        <member name="M:InABox.Core.CoreUtils.GetDefault(System.Type)">
            <summary>
                [ <c>public static object GetDefault(this Type type)</c> ]
                <para></para>
                Retrieves the default value for a given Type
            </summary>
            <param name="type">The Type for which to get the default value</param>
            <returns>The default value for
                <paramref name="type"/>
            </returns>
            <remarks>
                If a null Type, a reference Type, or a System.Void Type is supplied, this method always returns null. If
                a value type
                is supplied which is not publicly visible or which contains generic parameters, this method will fail
                with an
                exception.
            </remarks>
            <example>
                To use this method in its native, non-extension form, make a call like:
                <code>
                    object Default = DefaultValue.GetDefault(someType);
                </code>
                To use this method in its Type-extension form, make a call like:
                <code>
                    object Default = someType.GetDefault();
                </code>
            </example>
            <seealso cref="M:InABox.Core.CoreUtils.GetDefault``1"/>
        </member>
        <member name="M:InABox.Core.CoreUtils.GetDefault``1">
            <summary>
                [ <c>public static T GetDefault&lt; T &gt;()</c> ]
                <para></para>
                Retrieves the default value for a given Type
            </summary>
            <typeparam name="T">The Type for which to get the default value</typeparam>
            <returns>The default value for Type T</returns>
            <remarks>
                If a reference Type or a System.Void Type is supplied, this method always returns null. If a value type
                is supplied which is not publicly visible or which contains generic parameters, this method will fail
                with an
                exception.
            </remarks>
            <seealso cref="M:InABox.Core.CoreUtils.GetDefault(System.Type)"/>
        </member>
        <member name="M:InABox.Core.CoreUtils.IsDefault(System.Type,System.Object)">
            <summary>
                [ <c>public static bool IsObjectSetToDefault(this Type ObjectType, object ObjectValue)</c> ]
                <para></para>
                Reports whether a value of type T (or a null reference of type T) contains the default value for that
                Type
            </summary>
            <remarks>
                Reports whether the object is empty or unitialized for a reference type or nullable value type (i.e. is
                null) or
                whether the object contains a default value for a non-nullable value type (i.e. int = 0, bool = false,
                etc.)
                <para></para>
                NOTE: For non-nullable value types, this method introduces a boxing/unboxing performance penalty.
            </remarks>
            <param name="ObjectType">Type of the object to test</param>
            <param name="ObjectValue">The object value to test, or null for a reference Type or nullable value Type
            </param>
            <returns>
                true = The object contains the default value for its Type.
                <para></para>
                false = The object has been changed from its default value.
            </returns>
        </member>
        <member name="M:InABox.Core.CoreUtils.Clone``1(``0,``0)">
            <summary>
                Get the deep clone of an object.
            </summary>
            <typeparam name="T">The type of the obj.</typeparam>
            <param name="from">It is the object used to deep clone.</param>
            <returns>Return the deep clone.</returns>
        </member>
        <member name="M:InABox.Core.CoreUtils.DoClone(System.Object,System.Object)">
            <summary>
                The method implements deep clone using reflection.
            </summary>
            <param name="from">It is the object used to deep clone.</param>
            <returns>Return the deep clone.</returns>
        </member>
        <member name="M:InABox.Core.CoreUtils.CompareValues(System.String,System.Object,System.Object,System.Collections.Generic.List{System.Tuple{System.String,System.Object,System.Object}})">
            <summary>
                Compares two values and returns if they are the same.
            </summary>
        </member>
        <member name="T:InABox.Core.Crc32">
            <summary>
                Implements a 32-bit CRC hash algorithm compatible with Zip etc.
            </summary>
            <remarks>
                Crc32 should only be used for backward compatibility with older file formats
                and algorithms. It is not secure enough for new applications.
                If you need to call multiple times for the same data either use the HashAlgorithm
                interface or remember that the result of one Compute call needs to be ~ (XOR) before
                being passed in as the seed for the next Compute call.
            </remarks>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.#ctor">
            <summary>
                Initializes an instance of the ObservableConcurrentDictionary class.
            </summary>
        </member>
        <member name="E:InABox.Core.ObservableDictionary`2.CollectionChanged">
            <summary>Event raised when the collection changes.</summary>
        </member>
        <member name="E:InABox.Core.ObservableDictionary`2.PropertyChanged">
            <summary>Event raised when a property on the collection changes.</summary>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.NotifyObserversOfChange">
            <summary>
                Notifies observers of CollectionChanged or PropertyChanged of an update to the dictionary.
            </summary>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.TryAddWithNotification(System.Collections.Generic.KeyValuePair{`0,`1})">
            <summary>Attempts to add an item to the dictionary, notifying observers of any changes.</summary>
            <param name="item">The item to be added.</param>
            <returns>Whether the add was successful.</returns>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.TryAddWithNotification(`0,`1)">
            <summary>Attempts to add an item to the dictionary, notifying observers of any changes.</summary>
            <param name="key">The key of the item to be added.</param>
            <param name="value">The value of the item to be added.</param>
            <returns>Whether the add was successful.</returns>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.TryRemoveWithNotification(`0,`1@)">
            <summary>Attempts to remove an item from the dictionary, notifying observers of any changes.</summary>
            <param name="key">The key of the item to be removed.</param>
            <param name="value">The value of the item removed.</param>
            <returns>Whether the removal was successful.</returns>
        </member>
        <member name="M:InABox.Core.ObservableDictionary`2.UpdateWithNotification(`0,`1)">
            <summary>Attempts to add or update an item in the dictionary, notifying observers of any changes.</summary>
            <param name="key">The key of the item to be updated.</param>
            <param name="value">The new value to set for the item.</param>
            <returns>Whether the update was successful.</returns>
        </member>
        <member name="M:InABox.Core.PredicateExtensions.Begin``1(System.Boolean)">
            <summary>
                Begin an expression chain
            </summary>
            <typeparam name="T"></typeparam>
            <param name="value">Default return value if the chanin is ended early</param>
            <returns>A lambda expression stub</returns>
        </member>
        <member name="M:InABox.Core.TaskUtils.WaitWhile(System.Func{System.Boolean},System.Int32,System.Int32)">
            <summary>
                Blocks while condition is true or timeout occurs.
            </summary>
            <param name="condition">The condition that will perpetuate the block.</param>
            <param name="frequency">The frequency at which the condition will be check, in milliseconds.</param>
            <param name="timeout">Timeout in milliseconds.</param>
            <exception cref="T:System.TimeoutException"></exception>
            <returns></returns>
        </member>
        <member name="M:InABox.Core.TaskUtils.WaitUntil(System.Func{System.Boolean},System.Int32,System.Int32)">
            <summary>
                Blocks until condition is true or timeout occurs.
            </summary>
            <param name="condition">The break condition.</param>
            <param name="frequency">The frequency at which the condition will be checked.</param>
            <param name="timeout">The timeout in milliseconds.</param>
            <returns></returns>
        </member>
        <member name="T:InABox.Core.TimeSpanFormatter">
            <summary>
                Custom string formatter for TimeSpan that allows easy retrieval of Total segments.
            </summary>
            <example>
                TimeSpan myTimeSpan = new TimeSpan(27, 13, 5);
                string.Format("{0:th,###}h {0:mm}m {0:ss}s", myTimeSpan) -> "27h 13m 05s"
                string.Format("{0:TH}", myTimeSpan) -> "27.2180555555556"

                NOTE: myTimeSpan.ToString("TH") does not work. See Remarks.
            </example>
            <remarks>
                Due to a quirk of .NET Framework (up through version 4.5.1),
                <code>TimeSpan.ToString(format, new TimeSpanFormatter())</code>
                will not work; it will always call
                TimeSpanFormat.FormatCustomized() which takes a DateTimeFormatInfo rather than an
                IFormatProvider/ICustomFormatter. DateTimeFormatInfo, unfortunately, is a sealed class.
            </remarks>
        </member>
        <member name="F:InABox.Core.TimeSpanFormatter.DefaultFormat">
            <summary>
                Used to create a wrapper format string with the specified format.
            </summary>
        </member>
        <member name="M:InABox.Core.TimeSpanFormatter.GetFormat(System.Type)">
            <remarks>
                IFormatProvider.GetFormat implementation.
            </remarks>
        </member>
        <member name="M:InABox.Core.TimeSpanFormatter.Format(System.String,System.Object,System.IFormatProvider)">
            <summary>
                Determines whether the specified format is looking for a total, and formats it accordingly.
                If not, returns the default format for the given <para>format</para> of a TimeSpan.
            </summary>
            <returns>
                The formatted string for the given TimeSpan.
            </returns>
            <remarks>
                ICustomFormatter.Format implementation.
            </remarks>
        </member>
        <member name="M:InABox.Core.TimeSpanFormatter.GetDefault(System.String,System.Object)">
            <summary>
                Returns the formatted value when we don't know what to do with their specified format.
            </summary>
        </member>
        <member name="M:InABox.Core.XmlHelperExtentions.LoadString(System.Xml.XmlDocument,System.String,System.Text.Encoding)">
            <summary>
                Loads a string through .Load() instead of .LoadXml()
                This prevents character encoding problems.
            </summary>
            <param name="xmlDocument"></param>
            <param name="xmlString"></param>
            <param name="encoding"></param>
        </member>
    </members>
</doc>
