Support logical arrays

This commit is contained in:
Alexander Luzgarev 2019-03-12 18:54:24 +01:00
parent 67905605d6
commit 99558d96c4
3 changed files with 25 additions and 0 deletions

View File

@ -204,6 +204,24 @@ namespace MatFileHandler.Tests
Assert.That(structure["y", 1, 2].IsEmpty, Is.True); Assert.That(structure["y", 1, 2].IsEmpty, Is.True);
} }
/// <summary>
/// Test reading a logical array.
/// </summary>
[Test]
public void TestLogical()
{
var matFile = ReadHdfTestFile("logical");
var array = matFile["logical_"].Value;
var logicalArray = array as IArrayOf<bool>;
Assert.That(logicalArray, Is.Not.Null);
Assert.That(logicalArray[0, 0], Is.True);
Assert.That(logicalArray[0, 1], Is.True);
Assert.That(logicalArray[0, 2], Is.False);
Assert.That(logicalArray[1, 0], Is.False);
Assert.That(logicalArray[1, 1], Is.True);
Assert.That(logicalArray[1, 2], Is.True);
}
private static void CheckComplexLimits<T>(IArrayOf<ComplexOf<T>> array, T[] limits) private static void CheckComplexLimits<T>(IArrayOf<ComplexOf<T>> array, T[] limits)
where T : struct where T : struct
{ {

Binary file not shown.

View File

@ -24,6 +24,7 @@ namespace MatFileHandler
MSingle, MSingle,
MDouble, MDouble,
MCell, MCell,
MLogical,
} }
internal class HdfArray : IArray internal class HdfArray : IArray
@ -440,6 +441,8 @@ namespace MatFileHandler
{ {
case "canonical empty": case "canonical empty":
return HdfMatlabClass.MEmpty; return HdfMatlabClass.MEmpty;
case "logical":
return HdfMatlabClass.MLogical;
case "char": case "char":
return HdfMatlabClass.MChar; return HdfMatlabClass.MChar;
case "int8": case "int8":
@ -598,6 +601,8 @@ namespace MatFileHandler
{ {
case HdfMatlabClass.MEmpty: case HdfMatlabClass.MEmpty:
return HdfArray.Empty(); return HdfArray.Empty();
case HdfMatlabClass.MLogical:
return ReadNumericalArray<bool>(datasetId, dims, arrayType);
case HdfMatlabClass.MChar: case HdfMatlabClass.MChar:
return ReadCharArray(datasetId, dims); return ReadCharArray(datasetId, dims);
case HdfMatlabClass.MInt8: case HdfMatlabClass.MInt8:
@ -651,6 +656,7 @@ namespace MatFileHandler
{ {
case HdfMatlabClass.MInt8: case HdfMatlabClass.MInt8:
case HdfMatlabClass.MUInt8: case HdfMatlabClass.MUInt8:
case HdfMatlabClass.MLogical:
return 1; return 1;
case HdfMatlabClass.MInt16: case HdfMatlabClass.MInt16:
case HdfMatlabClass.MUInt16: case HdfMatlabClass.MUInt16:
@ -675,6 +681,7 @@ namespace MatFileHandler
case HdfMatlabClass.MInt8: case HdfMatlabClass.MInt8:
return H5T.NATIVE_INT8; return H5T.NATIVE_INT8;
case HdfMatlabClass.MUInt8: case HdfMatlabClass.MUInt8:
case HdfMatlabClass.MLogical:
return H5T.NATIVE_UINT8; return H5T.NATIVE_UINT8;
case HdfMatlabClass.MInt16: case HdfMatlabClass.MInt16:
return H5T.NATIVE_INT16; return H5T.NATIVE_INT16;