ColumnDataReader Class Reference

#include <ColumnDataReader.hpp>

Inheritance diagram for ColumnDataReader:

Inheritance graph
[legend]
Collaboration diagram for ColumnDataReader:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ColumnDataReader (const std::string &rDirectory, const std::string &rBaseName, bool makeAbsolute=true)
std::vector< double > GetValues (const std::string &rVariableName)
std::vector< double > GetValues (const std::string &rVariableName, int fixedDimension)
std::vector< double > GetUnlimitedDimensionValues ()
bool HasValues (const std::string &rVariableName)

Private Member Functions

void PushColumnEntryFromLine (const std::string &rLine, int col)
void ReadColumnFromFile (const std::string &rFilename, int col)
void ReadValueFromFile (const std::string &rFilename, int col, int row)

Private Attributes

std::map< std::string, int > mVariablesToColumns
std::map< std::string,
std::string > 
mVariablesToUnits
int mNumFixedDimensions
bool mHasUnlimitedDimension
int mNumVariables
std::string mInfoFilename
std::string mDataFilename
std::string mAncillaryFilename
std::vector< double > mValues

Static Private Attributes

static const int FIELD_WIDTH = 10
static const int SPACING = 2


Detailed Description

A concrete column data reader class.

Definition at line 40 of file ColumnDataReader.hpp.


Constructor & Destructor Documentation

ColumnDataReader::ColumnDataReader ( const std::string &  rDirectory,
const std::string &  rBaseName,
bool  makeAbsolute = true 
)

Read data from the given files into memory.

Parameters:
rDirectory The directory the files are stored in
rBaseName The base name of the files to read (i.e. without the extensions)
makeAbsolute Whether to convert directory to an absolute path using the OutputFileHandler (defaults to true)

Definition at line 53 of file ColumnDataReader.cpp.

References FILE_SUFFIX_WIDTH, OutputFileHandler::GetOutputDirectoryFullPath(), mAncillaryFilename, mDataFilename, mHasUnlimitedDimension, mInfoFilename, mNumFixedDimensions, mNumVariables, mVariablesToColumns, mVariablesToUnits, and NOT_READ.


Member Function Documentation

void ColumnDataReader::PushColumnEntryFromLine ( const std::string &  rLine,
int  col 
) [private]

Push back an entry from the data file into mValues.

Parameters:
rLine the line of the data file
col the column number

Definition at line 318 of file ColumnDataReader.cpp.

References FIELD_WIDTH, mValues, and SPACING.

Referenced by ReadColumnFromFile(), and ReadValueFromFile().

void ColumnDataReader::ReadColumnFromFile ( const std::string &  rFilename,
int  col 
) [private]

Read in a given column from a data file into mValues.

Parameters:
rFilename the file name
col the column number

Definition at line 292 of file ColumnDataReader.cpp.

References mValues, and PushColumnEntryFromLine().

Referenced by GetUnlimitedDimensionValues(), and GetValues().

void ColumnDataReader::ReadValueFromFile ( const std::string &  rFilename,
int  col,
int  row 
) [private]

Push back an entry from a file into mValues.

Parameters:
rFilename the file name
col the column number
row the row number

Definition at line 272 of file ColumnDataReader.cpp.

References PushColumnEntryFromLine().

Referenced by GetValues().

std::vector< double > ColumnDataReader::GetValues ( const std::string &  rVariableName  )  [virtual]

Get the entries for a given variable.

Todo:
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!
Parameters:
rVariableName 

Implements AbstractDataReader.

Definition at line 176 of file ColumnDataReader.cpp.

References mDataFilename, mNumFixedDimensions, mValues, mVariablesToColumns, and ReadColumnFromFile().

std::vector< double > ColumnDataReader::GetValues ( const std::string &  rVariableName,
int  fixedDimension 
) [virtual]

Get the entries for a given variable with fixed dimension.

Todo:
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!
Parameters:
rVariableName 
fixedDimension 

Implements AbstractDataReader.

Definition at line 195 of file ColumnDataReader.cpp.

References FILE_SUFFIX_WIDTH, mDataFilename, mHasUnlimitedDimension, mNumFixedDimensions, mValues, mVariablesToColumns, and ReadValueFromFile().

std::vector< double > ColumnDataReader::GetUnlimitedDimensionValues (  ) 

Get the entries for a given variable with unlimited dimension.

Todo:
This method returns a copy of ColumnDataReader::mValues - would it make more sense to change the semantics and return by reference? The only downside is that users would need to copy the result before calling ColumnDataReader::GetValues again, if they wanted to keep the original results, which might cause head scratching!

Definition at line 252 of file ColumnDataReader.cpp.

References mAncillaryFilename, mDataFilename, mHasUnlimitedDimension, mNumFixedDimensions, mValues, and ReadColumnFromFile().

bool ColumnDataReader::HasValues ( const std::string &  rVariableName  ) 

Determine whether the data file has entries for a given variable.

Parameters:
rVariableName 

Definition at line 333 of file ColumnDataReader.cpp.

References mVariablesToColumns.


Member Data Documentation

std::map<std::string, int> ColumnDataReader::mVariablesToColumns [private]

Map between variable names and data column numbers.

Todo:
Change int to unsigned? (#991)

Definition at line 44 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader(), GetValues(), and HasValues().

std::map<std::string, std::string> ColumnDataReader::mVariablesToUnits [private]

Map between variable names and variable units.

Definition at line 45 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader().

The number of fixed dimensions in data file.

Definition at line 46 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().

Whether the data file has an unlimited dimension.

Definition at line 47 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().

The number of variables in the data file.

Definition at line 48 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader().

std::string ColumnDataReader::mInfoFilename [private]

The name of the info file.

Definition at line 49 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader().

std::string ColumnDataReader::mDataFilename [private]

The name of the data file.

Definition at line 50 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader(), GetUnlimitedDimensionValues(), and GetValues().

std::string ColumnDataReader::mAncillaryFilename [private]

The name of the ancillary file.

Definition at line 51 of file ColumnDataReader.hpp.

Referenced by ColumnDataReader(), and GetUnlimitedDimensionValues().

std::vector<double> ColumnDataReader::mValues [private]

Vector to hold values for a variable.

Definition at line 52 of file ColumnDataReader.hpp.

Referenced by GetUnlimitedDimensionValues(), GetValues(), PushColumnEntryFromLine(), and ReadColumnFromFile().

const int ColumnDataReader::FIELD_WIDTH = 10 [static, private]

Width of each column in the text file (excludes column headers)

Definition at line 79 of file ColumnDataReader.hpp.

Referenced by PushColumnEntryFromLine().

const int ColumnDataReader::SPACING = 2 [static, private]

Space between columns (includes minus sign)

Definition at line 80 of file ColumnDataReader.hpp.

Referenced by PushColumnEntryFromLine().


The documentation for this class was generated from the following files:

Generated on Tue Aug 4 16:11:07 2009 for Chaste by  doxygen 1.5.5