diff --git a/MatFileHandler.Tests/MatFileReaderTests.cs b/MatFileHandler.Tests/MatFileReaderTests.cs index 9000225..e300ec7 100755 --- a/MatFileHandler.Tests/MatFileReaderTests.cs +++ b/MatFileHandler.Tests/MatFileReaderTests.cs @@ -326,6 +326,9 @@ namespace MatFileHandler.Tests Assert.That(obj[2]["x"].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); } + /// + /// Test reading a table. + /// [Test] public void TestTable() { diff --git a/MatFileHandler/TableAdapter.cs b/MatFileHandler/TableAdapter.cs index 0901f66..f6aa641 100644 --- a/MatFileHandler/TableAdapter.cs +++ b/MatFileHandler/TableAdapter.cs @@ -1,12 +1,21 @@ -using System; +// Copyright 2017-2018 Alexander Luzgarev + +using System; using System.Linq; namespace MatFileHandler { + /// + /// A better interface for using table objects. + /// public class TableAdapter { private readonly IMatObject matObject; + /// + /// Initializes a new instance of the class. + /// + /// Source table object. public TableAdapter(IArray array) { matObject = array as IMatObject; @@ -14,6 +23,7 @@ namespace MatFileHandler { throw new ArgumentException("The object provided is not a table."); } + var cellArray = matObject["varnames"] as ICellArray; VariableNames = Enumerable .Range(0, cellArray.Count) @@ -22,7 +32,7 @@ namespace MatFileHandler NumberOfVariables = VariableNames.Length; var props = matObject["props"] as IStructureArray; Description = (props["Description"] as ICharArray).String; - NumberOfRows = (int) matObject["nrows"].ConvertToDoubleArray()[0]; + NumberOfRows = (int)matObject["nrows"].ConvertToDoubleArray()[0]; var rowNamesArrays = matObject["rownames"] as ICellArray; RowNames = Enumerable .Range(0, rowNamesArrays.Count) @@ -30,14 +40,36 @@ namespace MatFileHandler .ToArray(); } + /// + /// Gets table description. + /// + public string Description { get; } + + /// + /// Gets the number of rows in the table. + /// public int NumberOfRows { get; } - public string[] RowNames { get; } - + /// + /// Gets the number of variables in the table. + /// public int NumberOfVariables { get; } + /// + /// Gets row names. + /// + public string[] RowNames { get; } + + /// + /// Gets variable names. + /// public string[] VariableNames { get; } + /// + /// Gets all the data for a given variable + /// + /// Variable name. + /// All data associated with the variable. public IArray this[string variableName] { get @@ -50,11 +82,10 @@ namespace MatFileHandler { throw new IndexOutOfRangeException($"Variable '{variableName}' not found."); } + var data = matObject["data"] as ICellArray; return data[index]; } } - - public string Description { get; } } -} +} \ No newline at end of file