This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,235 @@
/*
* DataWindowAverager.cs
*
* Copyright © 2009
* Diversified Technical Systems, Inc.
* All Rights Reserved
*/
using System;
using System.Linq;
using DTS.Common.Utilities.DotNetProgrammingConstructs;
namespace DTS.Common.Utilities
{
/// <summary>
/// Time averaging data over a specific window
/// there can be pretrigger time and begin time can be used to compute the start
/// of the averaging window
/// </summary>
public partial class DataWindowAverager : Exceptional
{ ///
/// <summary>
/// Initialize an instance of this data window averager class.
/// </summary>
///
/// <param name="beginTimeSec">
/// Get the <see cref="double"/> time value (sec) of the start of the averaging window.
/// </param>
///
/// <param name="endTimeSec">
/// Get the <see cref="double"/> time value (sec) of the end of the averaging window.
/// </param>
///
/// <param name="preTriggerTimeSec">
/// Get the <see cref="double"/> pre-trigger time (sec).
/// </param>
///
/// <param name="sampleRateHz">
/// Get the <see cref="double"/> sample rate (Hz).
/// </param>
///
/// <param name="defaultValue">
/// Get the default <see cref="short"/> ADC value to be returned if the specified window
/// is invalid.
/// </param>
///
public DataWindowAverager(
double beginTimeSec,
double endTimeSec,
double preTriggerTimeSec,
double sampleRateHz,
short defaultValue)
{
try
{
BeginTimeSec = beginTimeSec;
EndTimeSec = endTimeSec;
PreTriggerTimeSec = preTriggerTimeSec;
SampleRateHz = sampleRateHz;
DefaultValue = defaultValue;
}
catch (System.Exception ex)
{
throw new Exception("encountered problem constructing " + GetType().FullName, ex);
}
}
/// <summary>
/// Get the <see cref="double"/> time value (sec) of the start of the averaging window.
/// </summary>
public double BeginTimeSec
{
get => _beginTimeSec.Value;
private set => _beginTimeSec.Value = value;
}
private readonly Property<double> _beginTimeSec
= new Property<double>(
typeof(DataWindowAverager).FullName + ".BeginTimeSec",
0.0,
false
);
/// <summary>
/// Get the <see cref="double"/> time value (sec) of the end of the averaging window.
/// </summary>
public double EndTimeSec
{
get => _endTimeSec.Value;
private set => _endTimeSec.Value = value;
}
private readonly Property<double> _endTimeSec
= new Property<double>(
typeof(DataWindowAverager).FullName + ".EndTimeSec",
0.0,
false
);
/// <summary>
/// Get the <see cref="double"/> pre-trigger time (sec).
/// </summary>
public double PreTriggerTimeSec
{
get => _preTriggerTimeSec.Value;
private set => _preTriggerTimeSec.Value = value;
}
private readonly Property<double> _preTriggerTimeSec
= new Property<double>(
typeof(DataWindowAverager).FullName + ".PreTriggerTimeSec",
0.0,
false
);
/// <summary>
/// Get the <see cref="double"/> sample rate (Hz).
/// </summary>
public double SampleRateHz
{
get => _sampleRateHz.Value;
private set => _sampleRateHz.Value = value;
}
private readonly Property<double> _sampleRateHz
= new Property<double>(
typeof(DataWindowAverager).FullName + ".SampleRateHz",
0.0,
false
);
/// <summary>
/// Get the default <see cref="short"/> ADC value to be returned if the specified window
/// is invalid.
/// </summary>
public short DefaultValue
{
get => _defaultValue.Value;
private set => _defaultValue.Value = value;
}
private readonly Property<short> _defaultValue
= new Property<short>(
typeof(DataWindowAverager).FullName + ".DefaultValue",
0,
false
);
/// <summary>
/// Compute the <see cref="short"/> average of the window represented by the current state
/// of this object over the specified window values.
/// </summary>
///
/// <param name="windowValues">
/// An array of <see cref="short"/> values to be window-averaged.
/// </param>
///
/// <returns>
/// The average of the specified value falling within this object's window.
/// </returns>
///
public short DetermineWindowAverage(short[] windowValues)
{
try
{
var numSamples = (ulong)((EndTimeSec - BeginTimeSec) * SampleRateHz) + 1;
var windowSamples = new double[numSamples];
var startingIndex = ((long)((PreTriggerTimeSec + BeginTimeSec) * SampleRateHz));
if (0 > startingIndex)
throw new WindowDoesNotExistException(
"the specified averaging window (" + BeginTimeSec + "s to " + EndTimeSec + "s) does not exist in the specified data set"
);
try
{
for (ulong i = 0; i < numSamples; i++)
windowSamples[i] = windowValues[i + (ulong)startingIndex];
return ((short)windowSamples.Average());
}
catch (IndexOutOfRangeException)
{
throw new WindowDoesNotExistException("the specified averaging window lies outside of the supplied data");
}
}
catch (System.Exception ex)
{
throw new Exception("encountered problem determining window average", ex);
}
}
/// <summary>
/// Compute the <see cref="short"/> average of the window represented by the current state
/// of this object over the specified window values.
/// </summary>
///
/// <param name="windowValues">
/// An array of <see cref="double"/> values to be window-averaged.
/// </param>
///
/// <returns>
/// The average of the specified value falling within this object's window.
/// </returns>
///
public short DetermineWindowAverage(double[] windowValues)
{
try
{
var numSamples = (ulong)((EndTimeSec - BeginTimeSec) * SampleRateHz) + 1;
var windowSamples = new double[numSamples];
var startingIndex = ((long)((PreTriggerTimeSec + BeginTimeSec) * SampleRateHz));
if (0 > startingIndex)
throw new WindowDoesNotExistException(
"the specified averaging window (" + BeginTimeSec + "s to " + EndTimeSec + "s) does not exist in the given data set"
);
try
{
for (ulong i = 0; i < numSamples; i++)
windowSamples[i] = windowValues[i + (ulong)startingIndex];
var ave = (short)windowSamples.Average();
return (ave);
}
catch (IndexOutOfRangeException)
{
throw new WindowDoesNotExistException("the specified averaging window lies outside of the supplied data");
}
}
catch (System.Exception ex)
{
throw new Exception("encountered problem determining window average", ex);
}
}
}
}

View File

@@ -0,0 +1,494 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="DTS.Common.Utilities.ActiveUpdateList&lt;T&gt;" Collapsed="true">
<Position X="0.5" Y="5" Width="1.5" />
<TypeIdentifier>
<HashCode>ACMAAAAAAAAAAAAAIAAABAAAAAAAAAAAKAAAAIBEAAA=</HashCode>
<FileName>ActiveUpdateList.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ArrayToString" Collapsed="true">
<Position X="44.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAQAAAEAAAAAQAAAAAAAAAAEAAAAAAAAAAAA=</HashCode>
<FileName>ArrayToString.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.AttributeCoder&lt;TargetType, AttributeType, AttributeValueType&gt;" Collapsed="true">
<Position X="11.25" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAIQAAAAAAAAAAAAAAAAAAEAAAAAIAAAAAgAAAA=</HashCode>
<FileName>AttributeCoder.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.AttributeExtractor&lt;TAttributeType&gt;" Collapsed="true">
<Position X="20.25" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAE=</HashCode>
<FileName>AttributeExtractor.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.AverageQueue" Collapsed="true">
<Position X="46.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>ABABAAAAAAAABAAAAAACAAAAQAAAAAAAgAAAQBAACAA=</HashCode>
<FileName>AverageQueue.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.AverageShortValueOverTime" Collapsed="true">
<Position X="36" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA=</HashCode>
<FileName>AverageShortValueOverTime.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.AverageValueOverTime&lt;T&gt;" Collapsed="true">
<Position X="36" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BAAAAAAAQAIAAAAAAAAAAACAAAAgAAAAAAAAAAAAACA=</HashCode>
<FileName>AverageValueOverTime.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.IsoDescriptionAttribute" Collapsed="true">
<Position X="53.5" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.IsoDescriptionAttributeCoder" Collapsed="true">
<Position X="6.75" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.EnumerabilityAttribute" Collapsed="true">
<Position X="46.5" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.EnumerabilityAttributeCoder" Collapsed="true">
<Position X="11.25" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.CFCValueAttribute" Collapsed="true">
<Position X="48.25" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAEAAAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.CfcValueAttributeCoder" Collapsed="true">
<Position X="15.75" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.CheckComboBoxItem" Collapsed="true">
<Position X="51.75" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAAIACAAAAAA=</HashCode>
<FileName>CheckComboBox.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.CheckComboBox" Collapsed="true">
<Position X="50" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAQAAEgAAAAAAAAAAAA=</HashCode>
<FileName>CheckComboBox.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.FlagAttribute" Collapsed="true">
<Position X="50" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>DataFlag.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DataFlagAttributeCoder" Collapsed="true">
<Position X="9" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>DataFlag.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DataWindowAverager" Collapsed="true">
<Position X="4.5" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAkAAAAAAAAIAAAAAAAAgAAAgBAAAAAABYBAAAAEAA=</HashCode>
<FileName>DataWindowAverager.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DegreesFromADC" Collapsed="true">
<Position X="53.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA=</HashCode>
<FileName>DegreesFromADC.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DescriptionAttributeCoder&lt;TTargetType&gt;" Collapsed="true">
<Position X="13.5" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>DescriptionAttributeCoder.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DiskUtility" Collapsed="true">
<Position X="22.5" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAI=</HashCode>
<FileName>DiskUtility.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.EnumDropDown&lt;T&gt;" Collapsed="true">
<Position X="44.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAQAEABQAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>EnumDropDown.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Exceptional" Collapsed="true">
<Position X="21.5" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAgAAAAEAAAAAAAgAEAAAAAACAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Exceptional.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ExceptionalDictionary&lt;TKey, TValue&gt;" Collapsed="true">
<Position X="48.25" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ExceptionalDictionary.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ExceptionalForm" Collapsed="true">
<Position X="50" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ExceptionalForm.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ExceptionalList&lt;T&gt;" Collapsed="true">
<Position X="0.5" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ExceptionalList.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ExceptionalUserControl" Collapsed="true">
<Position X="51.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>ExceptionalUserControl.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.ExportINIFile" Collapsed="true">
<Position X="53.5" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>CAAACAASQgAAAAAAAQKwAACABEQAAAACgICAQAAAAAA=</HashCode>
<FileName>ExportINIFile.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.FileIOApiDeclarations" Collapsed="true">
<Position X="43" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAQDgAgAAQBAQEAAgAQAgCgAAAAAQAAAAIABCCAgAAQ=</HashCode>
<FileName>FileIODeclarations.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.FirmwareVersionToLong" Collapsed="true">
<Position X="48.25" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAA=</HashCode>
<FileName>FirmwareVersionToLong.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.HexEncoding" Collapsed="true">
<Position X="51.75" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AACAAAAQAAAAAAAEAAAAggAgAAAAAAAAAAABAAAAAAA=</HashCode>
<FileName>HexEncoding.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.KeywordAlert" Collapsed="true">
<Position X="43" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAQAAAAAAAAIIAAAAAAAAAAAQAAAAgAAAAA=</HashCode>
<FileName>KeywordAlert.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.NaturalStringComparer" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="48.25" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA=</HashCode>
<FileName>NaturalStringCompare.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.NHTSASubSample&lt;T&gt;" Collapsed="true">
<Position X="40.5" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAQAAAAAAAACEAAABAAAAAAAAAAAAAAQAAAEAAA=</HashCode>
<FileName>NHTSASubSample.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.PersistWindowState" Collapsed="true">
<Position X="50" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>CASAAAJEAAIAIAAAQAAA4gQCCAAAIAAAAAAAAQAAAAA=</HashCode>
<FileName>PersistWindowState.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.PowerManagement" Collapsed="true">
<Position X="51.75" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AIAAAAAAgAAEAAEAAAAAAgAKEAAAAAAAAAwAQAAAAAA=</HashCode>
<FileName>PowerManagement.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.PropertyComparer&lt;T&gt;" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="43" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAQAAAAAAAIAAAAAAABAAAAAAIAQAEABAAAAAAAA=</HashCode>
<FileName>PropertyComparer.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.ScrollingMessageBox" Collapsed="true">
<Position X="50" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAIEAAEGAAAAAAALCkgQECAAAhAAAEAIAAkQABACA=</HashCode>
<FileName>ScrollingMessageBox.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.SortableBindingList&lt;T&gt;" Collapsed="true">
<Position X="53.5" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAgAIAAABAEAAAAAAACBAAAEIAAgIEAAAAAAAEAA=</HashCode>
<FileName>SortableBindingList.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Time" Collapsed="true">
<Position X="44.75" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAgAIIAAAAEQAAA=</HashCode>
<FileName>Time.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.UpdateNotifyingList&lt;T&gt;" Collapsed="true">
<Position X="38.25" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAABAACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA=</HashCode>
<FileName>UpdateNotifyingList.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.WaitWithCondition" Collapsed="true">
<Position X="46.5" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAA=</HashCode>
<FileName>WaitWithCondition.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Logging.APILogger" Collapsed="true">
<Position X="43" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAEgAAAQAAABMAAAAEgCAAAAQAABAAGAAAI=</HashCode>
<FileName>APILogging.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Logging.TextLogger" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="43" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>MAAAAQIAgCAAAIAIiBAAQAAAAAAQgAIAAAAAAAACEEA=</HashCode>
<FileName>TextLogger.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.DoubleLargeArray" Collapsed="true">
<Position X="43" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAgAgCAAAAACAAAAAAAAQAAAAAAAAABA=</HashCode>
<FileName>DoubleLargeArray.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.FileMapIOException" Collapsed="true">
<Position X="44.75" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAIAAAAAA=</HashCode>
<FileName>FileMapIOException.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.FileMapViewArray" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="46.5" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAQAAAAAACAAAAQECAABAAAAAACAABAEACBAAAAAEAA=</HashCode>
<FileName>FileMapViewArray.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.LargeArray&lt;T&gt;" Collapsed="true">
<Position X="24.75" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>JEIAYEAAACCAkngwyAAAnASgARABZAAQCCAEAABQMHI=</HashCode>
<FileName>LargeArray.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.MapViewStream" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="44.75" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>IAAAAAAAACAAQAAgGAAAAABgAIABAAAABAAIggGIACA=</HashCode>
<FileName>MapViewStream.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.MemoryMappedFile" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="46.5" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>IAAAAAAAQCAAIAAAgAIAAAgAAAAAAEAAABAAQACAAAQ=</HashCode>
<FileName>MemoryMappedFile.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.ShortLargeArray" Collapsed="true">
<Position X="51.75" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAgAgCAAAAACAAAAAAAAQAAAAAAAAABA=</HashCode>
<FileName>ShortLargeArray.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.IO.MemoryMap.Win32MapApis" Collapsed="true">
<Position X="48.25" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAEAgCAAAAAAAAAAAAQAQCAEAAACAAAAAAAAAAAAAAA=</HashCode>
<FileName>Win32APIs.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.SaeJ211.FilterUtility" Collapsed="true">
<Position X="18" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BCAAAAAMAAgAAEAQAAACQQgCUQAAAABAgQIEAAAAAAA=</HashCode>
<FileName>FilterUtility.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Math.DoubleListOperation" Collapsed="true">
<Position X="29.25" Y="3.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Math.DoubleListOperation.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Math.Operation&lt;DomainType, RangeType&gt;" Collapsed="true">
<Position X="29.25" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAACAAAAAACAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Math.Operation.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Math.Iso.Differentiation" Collapsed="true">
<Position X="27" Y="4.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BAAAAAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Math.Iso.Differentiation.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Math.Nhtsa.Differentiation" Collapsed="true">
<Position X="29.25" Y="4.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BAAAAAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Math.Nhtsa.Differentiation.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Math.Nhtsa.Integration" Collapsed="true">
<Position X="31.5" Y="4.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BAAAAAAAAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Math.Nhtsa.Integration.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DotNetProgrammingConstructs.PowerOfTwoIntProperty" Collapsed="true">
<Position X="53.5" Y="3.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAgAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAA=</HashCode>
<FileName>PowerOfTwoIntProperty.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DotNetProgrammingConstructs.Property&lt;Type&gt;" Collapsed="true">
<Position X="2.25" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Property.ConstructionException.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DotNetProgrammingConstructs.RangeRestrictedDoubleProperty" Collapsed="true">
<Position X="44.75" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAIEAAAAAAQAAABAgAAAAAAAQAAAA=</HashCode>
<FileName>RangeRestrictedDoubleProperty.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.DotNetProgrammingConstructs.RangeRestrictedIntProperty" Collapsed="true">
<Position X="46.5" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAIEAAAAAAQAAABAgAAAAAAAQAAAA=</HashCode>
<FileName>RangeRestrictedIntProperty.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Properties.Resources" Collapsed="true">
<Position X="48.25" Y="4.5" Width="1.5" />
<TypeIdentifier>
<HashCode>BCASqICmIARAgGGAAESBmJgGKcgwoIMAAALPQgcCiNg=</HashCode>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Xml.PropertyAttributeDecoder&lt;T&gt;" Collapsed="true">
<Position X="33.75" Y="1.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAABEAIAAAQAAAAAAAAAQQAAAAAAAAAAAQA=</HashCode>
<FileName>Xml.PropertyAttributeDecoder.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="DTS.Common.Utilities.Xml.XmlSerializationTagAttribute" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="50" Y="5.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAEAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAA=</HashCode>
<FileName>XmlSerializationTagAttribute.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Enum Name="DTS.Common.Utilities.ChannelFilter" Collapsed="true">
<Position X="43" Y="6.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAIAAAEAAAgIAAAAAAAAACAAAAAAAAAAAAAI=</HashCode>
<FileName>ChannelFilter.cs</FileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.Common.Utilities.DataFlag" Collapsed="true">
<Position X="44.75" Y="6.75" Width="1.5" />
<TypeIdentifier>
<HashCode>BBAAAAAAAAAgAEAAAAAAAAAAAAAIAAAAAAAAAAEAAAA=</HashCode>
<FileName>DataFlag.cs</FileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.Common.Utilities.IO.MemoryMap.MapProtection" Collapsed="true">
<Position X="48.25" Y="6.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAgAAACAAAABAAAACAAAAEAAAAAAAAAAAgAAAAAgAE=</HashCode>
<FileName>MapViewStream.cs</FileName>
</TypeIdentifier>
</Enum>
<Enum Name="DTS.Common.Utilities.IO.MemoryMap.MapAccess" Collapsed="true">
<Position X="46.5" Y="6.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAgAAAAAAQAAgQAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>MemoryMappedFile.cs</FileName>
</TypeIdentifier>
</Enum>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>