/* * Matrix.hpp * * Created on: Mar 2, 2010 * Author: metzler */ #ifndef MATRIX_HPP_ #define MATRIX_HPP_ #include "memoryallocator.hpp" #include using namespace std; /** * "Generic" field content type. Holds a value as its string representation as * to use in a text file. */ class FieldContent { public: string getAsString(); int getAsInt(); double getAsDouble(); void set(string valueToSet); void set(int valueToSet); void set(double valueToSet); private: string value; }; /** * Holds the data of a matrix. */ class Matrix { public: Matrix(int rows, int columns); ~Matrix(); void setHeader(const string text); string getHeader(); int getNumberOfRows(); int getNumberOfColumns(); void setField(int rowIndex, int columnIndex, FieldContent value); FieldContent getField(int rowIndex, int columnIndex); private: string header; vector > fields; }; /** * Reads matrix with any formatting from a file. */ class MatrixReader { public: MatrixReader(); MatrixReader(char columnSep, char rowInitializer, char rowTerminator, char skipInitiator, char skipTerminator); Matrix* read(char* fileName, int rowOffset, int columnOffset); private: int determineNumberOfColumns(); char skipBegin; char skipEnd; char columnSeparator; char rowBegin; char rowEnd; }; /** * Writes a matrix with any formatting to a file. */ class MatrixWriter { public: void write(char* fileName, Matrix* matrix, char columnSeparator, char rowInitializer, char rowTerminator); }; #endif /* MATRIX_HPP_ */