00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _COLUMNDATAREADER_HPP_
00029 #define _COLUMNDATAREADER_HPP_
00030
00031 #include "AbstractDataReader.hpp"
00032 #include "ColumnDataWriter.hpp"
00033 #include <string>
00034 #include <vector>
00035 #include <map>
00036
00037
00038 class ColumnDataReader : public AbstractDataReader
00039 {
00040
00041 private:
00042 std::map<std::string,int> mVariablesToColumns;
00043 std::map<std::string, std::string> mVariablesToUnits;
00044 int mNumFixedDimensions;
00045 bool mHasUnlimitedDimension;
00046 int mNumVariables;
00047 std::string mInfoFilename;
00048 std::string mDataFilename;
00049 std::string mAncillaryFilename;
00050 std::vector<double> mValues;
00051
00052 void PushColumnEntryFromLine(std::string line, int col);
00053 void ReadColumnFromFile(std::string filename, int col);
00054 void ReadValueFromFile(std::string filename, int col, int row);
00055
00056 static const int FIELD_WIDTH = 10;
00057 static const int SPACING = 2;
00058 public:
00059
00060 ColumnDataReader(std::string filepath, std::string basename,
00061 bool make_absolute=true);
00062 std::vector<double> GetValues(std::string variableName);
00063 std::vector<double> GetValues(std::string variableName, int fixedDimension);
00064 std::vector<double> GetUnlimitedDimensionValues();
00065
00067 bool HasValues(const std::string& variableName);
00068
00069
00070 };
00071 #endif //_COLUMNDATAREADER_HPP_