<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Focal.Utilities</name>
    </assembly>
    <members>
        <member name="T:Focal.Utilities.ArrayView`1">
            <summary>
            Allows creation of custom 'sub-views' of a larger array.
            </summary>
            <example>
            <![CDATA[
            byte[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
            var p1 = new ArrayView<byte>(arr, 0, 5);
            foreach (byte b in p1) {
                Console.Write(b);
            }
            ]]>
            </example>
            <typeparam name="T"></typeparam>
        </member>
        <member name="T:Focal.Utilities.BlockingQueue`1">
            <summary>
            
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="M:Focal.Utilities.BlockingQueue`1.Enqueue(`0)">
            <summary>
            
            </summary>
            <param name="item"></param>
        </member>
        <member name="M:Focal.Utilities.BlockingQueue`1.Dequeue">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.BlockingQueue`1.TryDequeue(`0@)">
            <summary>
            
            </summary>
            <param name="value"></param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.BlockingQueue`1.Close">
            <summary>
            
            </summary>
        </member>
        <member name="T:Focal.Utilities.ByteExtensions">
            <summary>
            A collection of numerical conversion extension methods.
            </summary>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToUInt16(System.Byte[],System.UInt32,System.Boolean)">
            <summary>
            Converts 2 bytes in the supplied array to a UInt16, beginning at the specified offset.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <param name="value">The byte array from which to extract the data for the conversion.</param>
            <param name="startIndex">The offset in the byte array from which to start the conversion.</param>
            <param name="isBigEndian">Indicates that a Big Endian conversion should be performed.
            (ie. the lower byte is the MSB).</param>
            <returns>The converted UInt16 value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToInt16(System.Byte[],System.UInt32,System.Boolean)">
            <summary>
            Converts 2 bytes in the supplied array to an Int16, beginning at the specified offset.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <param name="value">The byte array from which to extract the data for the conversion.</param>
            <param name="startIndex">The offset in the byte array from which to start the conversion.</param>
            <param name="isBigEndian">Indicates that a Big Endian conversion should be performed.
            (ie. the lower byte is the MSB).</param>
            <returns>The converted Int16 value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToUInt32(System.Byte[],System.UInt32,System.Boolean)">
            <summary>
            Converts 4 bytes in the supplied array to a UInt32, beginning at the specified offset.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <param name="value">The byte array from which to extract the data for the conversion.</param>
            <param name="startIndex">The offset in the byte array from which to start the conversion.</param>
            <param name="isBigEndian">Indicates that a Big Endian conversion should be performed.
            (ie. the lower byte is the MSB).</param>
            <returns>The converted UInt32 value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToInt32(System.Byte[],System.UInt32,System.Boolean)">
            <summary>
            Converts 4 bytes in the supplied array to an Int32, beginning at the specified offset.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <param name="value">The byte array from which to extract the data for the conversion.</param>
            <param name="startIndex">The offset in the byte array from which to start the conversion.</param>
            <param name="isBigEndian">Indicates that a Big Endian conversion should be performed.
            (ie. the lower byte is the MSB).</param>
            <returns>The converted Int32 value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToSingle(System.Byte[],System.UInt32,System.Boolean)">
            <summary>
            Converts 4 bytes in the supplied array to a Single (IEEE float), beginning at the specified offset.
            </summary>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
            <param name="value">The byte array from which to extract the data for the conversion.</param>
            <param name="startIndex">The offset in the byte array from which to start the conversion.</param>
            <param name="isBigEndian">Indicates that a Big Endian conversion should be performed.
            (ie. the lower byte is the MSB).</param>
            <returns>The converted Single (IEEE float) value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToHex(System.Byte[])">
            <summary>
            Converts the numeric value of each element of a specified array of
            bytes to its equivalent hexadecimal string representation.
            </summary>
            <remarks>This extension is just an extension wrapper for BitConverter.ToString().</remarks>
            <param name="data">The byte array to convert to hex.</param>
            <returns>A string of hexadecimal pairs separated by hyphens, where 
            each pair represents the corresponding element in value; for 
            example, "7F-2C-4A".</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToUInt16String(System.Byte[])">
            <summary>
            Converts an array of bytes into a formatted string of uint16 digits (ex: 255 154 78 )
            </summary>
            <param name="data"> The array of bytes to be translated into a string of int16 digits. </param>
            <returns> Returns a well-formatted string of int16 digits with spacing. </returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.HexStringToByteArray(System.String)">
            <summary> 
            Convert a string of hex digits (ex: E4 CA B2) to a byte array. 
            </summary>
            <param name="s"> The string containing the hex digits 
            (ex: E4 CA B2) (with or without spaces). </param>
            <returns> Returns an array of bytes. </returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.EndianSwap(System.UInt16)">
            <summary>
            Swaps the MSB and LSB of the supplied ushort.
            </summary>
            <param name="value">The value in which to swap the MSB and LSB.</param>
            <returns>An endian-swapped version of the input value.</returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ValidateConversionParameters(System.Byte[],System.UInt32,System.TypeCode)">
            <summary>
            Validates conversion parameters.
            </summary>
            <param name="value"></param>
            <param name="startIndex"></param>
            <param name="typeCode"></param>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.BitIsSet(System.Byte,System.Int32)">
            <summary>
            Determines if the specified bit is set in the byte value.
            </summary>
            <param name="value">The byte value to test.</param>
            <param name="bitIndex">The index of the bit to test.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.BitIsSet(System.UInt16,System.Int32)">
            <summary>
            Determines if the specified bit is set in the uint16 value.
            </summary>
            <param name="value">The byte value to test.</param>
            <param name="bitIndex">The index of the bit to test.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.SetBit(System.Byte,System.Int32)">
            <summary>
            Sets the specified bit in the byte value.
            </summary>
            <param name="value">The byte value in which to set the bit.</param>
            <param name="bitIndex">The index of the bit to set.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.SetBit(System.UInt16,System.Int32)">
            <summary>
            Sets the specified bit in the UInt16 value.
            </summary>
            <param name="value">The UInt16 value in which to set the bit.</param>
            <param name="bitIndex">The index of the bit to set.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ClearBit(System.Byte,System.Int32)">
            <summary>
            Clears the specified bit in the byte value.
            </summary>
            <param name="value">The byte value in which to clear the bit.</param>
            <param name="bitIndex">The index of the bit to clear.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ClearBit(System.UInt16,System.Int32)">
            <summary>
            Clears the specified bit in the UInt16 value.
            </summary>
            <param name="value">The UInt16 value in which to clear the bit.</param>
            <param name="bitIndex">The index of the bit to clear.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToggleBit(System.Byte,System.Int32)">
            <summary>
            Toggles the specified bit in the byte value.
            </summary>
            <param name="value">The byte value in which to set or clear a bit.</param>
            <param name="bitIndex">The index of the bit to set or clear.</param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.ByteExtensions.ToggleBit(System.UInt16,System.Int32)">
            <summary>
            Toggles the specified bit in the UInt16 value.
            </summary>
            <param name="value">The byte value in which to set or clear a bit.</param>
            <param name="bitIndex">The index of the bit to set or clear.</param>
            <returns></returns>
        </member>
        <member name="T:Focal.Utilities.CRC">
            <summary>
            Provides a number of helper methods to calculate CRC values.
            </summary>
        </member>
        <member name="M:Focal.Utilities.CRC.UpdateCRC16(System.UInt16,System.Byte)">
            <summary>
            Calculates a new CRC-16 value based on the previous CRC value and 
            the next byte in the data buffer.
            </summary>
            <param name="crc"></param>
            <param name="c"></param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.CRC.CalcCRC16(System.Byte[],System.Int32)">
            <summary>
            Calculates the CRC-16 value for the supplied data buffer,        
            </summary>
            <param name="buf"></param>
            <param name="numBytes"></param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.CRC.VerifyCRC16(System.Byte[],System.Int32)">
            <summary>
            Verifies that the last 2 bytes in the supplied data buffer are the 
            CRC-16 value for the preceding bytes.
            </summary>
            <param name="buf"></param>
            <param name="numBytes"></param>
            <returns></returns>
        </member>
        <member name="T:Focal.Utilities.EnumerableComparer`1">
            <summary>
            Compares two sequences.
            </summary>
            <typeparam name="T">Type of item in the sequences.</typeparam>
            <remarks>
            Compares elements from the two input sequences in turn. If we
            run out of list before finding unequal elements, then the shorter
            list is deemed to be the lesser list.
            </remarks>
        </member>
        <member name="M:Focal.Utilities.EnumerableComparer`1.#ctor">
            <summary>
            Create a sequence comparer using the default comparer for T.
            </summary>
        </member>
        <member name="M:Focal.Utilities.EnumerableComparer`1.#ctor(System.Collections.Generic.IComparer{`0})">
            <summary>
            Create a sequence comparer, using the specified item comparer
            for T.
            </summary>
            <param name="comparer">Comparer for comparing each pair of
            items from the sequences.</param>
        </member>
        <member name="F:Focal.Utilities.EnumerableComparer`1._comparer">
            <summary>
            Object used for comparing each element.
            </summary>
        </member>
        <member name="M:Focal.Utilities.EnumerableComparer`1.Compare(System.Collections.Generic.IEnumerable{`0},System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Compare two sequences of T.
            </summary>
            <param name="x">First sequence.</param>
            <param name="y">Second sequence.</param>
        </member>
        <member name="T:Focal.Utilities.EventArgs`1">
            <summary>
            Enables creation of an event that can return any type of object.
            </summary>
            <example>
            First, declare the event using the appropriate type
            (in this example, a string):
            <code>
            <![CDATA[event EventHandler<EventArgs<String>>_stringEvent;]]>
            </code>
            Then fire the event like so:
            <code>
            <![CDATA[
            void RaiseStringEvent(string msg){
                if(_stringEvent != null){
                    _stringEvent(this, new EventArgs<String>(msg));
                }
            }
            ]]>
            </code>
            </example>
            <typeparam name="T">The return object type.</typeparam>
        </member>
        <member name="T:Focal.Utilities.EventArgs`2">
            <summary>
            Enables the creation of an event with two typed return values.
            </summary>
            <typeparam name="T">The first return object type.</typeparam>
            <typeparam name="U">The second return object type.</typeparam>
        </member>
        <member name="T:Focal.Utilities.EventArgs`3">
            <summary>
            Enables the creation of an event with three typed return values.
            </summary>
            <typeparam name="T">The first return object type.</typeparam>
            <typeparam name="U">The second return object type.</typeparam>
            <typeparam name="V">The third return object type.</typeparam>
        </member>
        <member name="T:Focal.Utilities.MiscExtensions">
            <summary>
            A collection of miscellaneous extension methods.
            </summary>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.Description(System.Enum)">
            <summary>
            Gets the 'Description' attribute for the supplied enum value.
            </summary>
            <example>    
            <code>
            <![CDATA[
            foreach (Command cmd in Enum.GetValues(typeof(Command))) {
                Console.WriteLine(cmd.Description());
            }
            ]]>
            </code>
            </example>
            <param name="value">The enum value from which to extract the 
            description.</param>
            <returns>Returns the description if it exists, otherwise returns a 
            string representation of the supplied enum value.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.SortNaturally(System.String[])">
            <summary>
            Sorts 'naturally' the supplied string array. 
            (ie. COM3 appears before COM22, etc).
            </summary>
            <remarks>
            <para>This method allows us to numerically sort strings that contain numbers.</para>
            <para>A normal 'Array.Sort' will return something like this:
            'COM1, COM11, COM112, COM2, COM22, COM3....etc'.</para> 
            <para>This method allows us to return:
            'COM1, COM2, COM3, COM11, COM22, COM112...etc'.</para>
            </remarks>
            <param name="source">The string array to sort.</param>
            <returns>The string array, sorted 'naturally'.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.ToXML``1(``0)">
            <summary>
            Serializes an object to xml.
            </summary>
            <returns>A string containing the xml serialized object.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.FromXML``1(``0,System.IO.FileStream,System.String)">
            <summary>
            Deserializes an object from XML.
            </summary>
            <example>
            Here's how to import a 'ConsoleConfiguration' object from an xml file:
            <code>
            <![CDATA[
            var config = new ConsoleConfiguration()
                .FromXML((FileStream)openFileDialog1.OpenFile(),
                "ConsoleConfigurationSchema.xsd");
            ]]>
            </code>
            </example>
            <param name="inputStream">The xml file stream to deserialize.</param>
            <param name="schemaPath">The path to the xml schema validation file (typically a .xsd file).
            No validation occurs if the schemaPath parameter is null.</param>
            <param name="obj"></param>
            <returns>The deserialized object.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.FromXmlWithSchemaStream``1(``0,System.IO.Stream,System.IO.Stream)">
            <summary>
            Deserializes an object from XML.
            </summary>
            <example>
            Here's how to import a 'ConsoleConfiguration' object from an xml file:
            <code>
            <![CDATA[
            var config = new ConsoleConfiguration()
                .FromXML((FileStream)openFileDialog1.OpenFile(),
                "ConsoleConfigurationSchema.xsd");
            ]]>
            </code>
            </example>
            <param name="inputStream">The xml file stream to deserialize.</param>
            <param name="schemaStream">The xml stream forthe xml schema validation file (typically a .xsd file).
            No validation occurs if the schemaStream parameter is null.</param>
            <param name="obj"></param>
            <returns>The deserialized object.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.ToEngineeringNotation(System.Double,System.Int32)">
            <summary>
            Formats a double to engineering notation.
            </summary>
            <param name="d">The number to format into engineering notation.</param>
            <param name="numDecimals">The number of decimal points in the result.</param>
            <returns>The original double expressed in engineering notation.</returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.LettersAndDigitsOnly(System.String)">
            <summary>
            Removes all non-letter and non-digit characters from the string.
            </summary>
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Focal.Utilities.MiscExtensions.GroupConsecutive(System.Collections.Generic.IEnumerable{System.Int32})">
            <summary>
            Groups consecutive integers. Requires asc-ordered list.
            </summary>
            <remarks>
            This extension was modified from the original at: 
            http://bugsquash.blogspot.com/2010/01/grouping-consecutive-integers-in-c.html
            </remarks>
            <example>
            Sample usage:
            <![CDATA[
            var groups = new[] {1, 2, 4, 5, 6, 9}.GroupConsecutive();
            foreach (var g in groups)
                Console.WriteLine("group: {0}", string.Join(",", g.Select(x => x.ToString()).ToArray()));
            ]]>     
            which prints out:
            <code>
            group: 1,2
            group: 4,5,6
            group: 9
            </code>
            </example>
            <param name="list">ASC-ordered list of integers</param>
            <returns></returns>
        </member>
        <member name="T:Focal.Utilities.MiscUtils">
            <summary>
            A collection of some useful utility methods.
            </summary>
        </member>
        <member name="T:Focal.Utilities.MiscUtils.Func`2">
            <summary>
            Encapsulates a method has a single 'out' parameter of type TOutParam
            and returns a value of the type specified by the TResult parameter.
            </summary>
            <typeparam name="TOutParam">The type of the 'out' parameter of the 
            method that this delegate encapsulates.</typeparam>
            <typeparam name="TResult">The type of the return value of the method
            that this delegate encapsulates.</typeparam>
            <param name="output"></param>
            <returns>The return value of the method that this delegate encapsulates.</returns>
        </member>
        <member name="T:Focal.Utilities.MiscUtils.Func`3">
            <summary>
            Encapsulates a method has one parameter of type T, a single 'out' parameter
            of type TOutParam and returns a value of the type specified by the TResult 
            parameter.
            </summary>
            <typeparam name="T">The type of the parameter of the method that this 
            delegate encapsulates.</typeparam>
            <typeparam name="TOutParam">The type of the 'out' parameter of the 
            method that this delegate encapsulates.</typeparam>
            <typeparam name="TResult">The type of the return value of the method
            that this delegate encapsulates.</typeparam>
            <param name="input"></param>
            <param name="output"></param>
            <returns>The return value of the method that this delegate encapsulates.</returns>
        </member>
        <member name="T:Focal.Utilities.MiscUtils.Func`4">
            <summary>
            Encapsulates a method has two parameters of type T1, T2, a 
            single 'out' parameter of type TOutParam and returns a value of the
            type specified by the TResult parameter.
            </summary>
            <typeparam name="T1">The type of the first parameter of the method 
            that this delegate encapsulates.</typeparam>
            <typeparam name="T2">The type of the second parameter of the method 
            that this delegate encapsulates.</typeparam>
            <typeparam name="TOutParam">The type of the 'out' parameter of the 
            method that this delegate encapsulates.</typeparam>
            <typeparam name="TResult">The type of the return value of the method
            that this delegate encapsulates.</typeparam>
            <param name="arg1"></param>
            <param name="arg2"></param>
            <param name="output"></param>
            <returns>The return value of the method that this delegate encapsulates.</returns>
        </member>
        <member name="T:Focal.Utilities.MiscUtils.Func`5">
            <summary>
            Encapsulates a method has three parameters of type T1, T2, T3, a 
            single 'out' parameter of type TOutParam and returns a value of the
            type specified by the TResult parameter.
            </summary>
            <typeparam name="T1">The type of the first parameter of the method 
            that this delegate encapsulates.</typeparam>
            <typeparam name="T2">The type of the second parameter of the method 
            that this delegate encapsulates.</typeparam>
            <typeparam name="T3">The type of the third parameter of the method 
            that this delegate encapsulates.</typeparam>
            <typeparam name="TOutParam">The type of the 'out' parameter of the 
            method that this delegate encapsulates.</typeparam>
            <typeparam name="TResult">The type of the return value of the method
            that this delegate encapsulates.</typeparam>
            <param name="arg1"></param>
            <param name="arg2"></param>
            <param name="arg3"></param>
            <param name="output"></param>
            <returns>The return value of the method that this delegate encapsulates.</returns>
        </member>
    </members>
</doc>
