00001
00002
00004
00005 #ifdef WIN32
00006 #pragma warning(disable:4786)
00007 #endif
00008 #include "GenericFileReader1D.h"
00009
00011
00013 namespace Interpolator
00014 {
00016 GenericFileReader1D::GenericFileReader1D()
00017 {
00018 _mColumnsVector = new vector< double* >();
00019 _mColumnsNameVector = new vector< std::string >();
00020 }
00021
00023 GenericFileReader1D::~GenericFileReader1D()
00024 {
00025 for (int i=0;i< (signed)_mColumnsVector->size();i++)
00026 {
00027 double * pColumn = getColumn(i);
00028 if (pColumn)
00029 {
00030 delete [] pColumn;
00031 pColumn = 0;
00032 }
00033 }
00034
00035 DESTRUCTION (_mColumnsVector);
00036 DESTRUCTION (_mColumnsNameVector);
00037 }
00038
00041 GenericFileReader1D::GenericFileReader1D(const std::string& sFileName) : FileReader(sFileName)
00042 {
00043 _mColumnsVector = new vector< double* >();
00044 _mColumnsNameVector = new vector< std::string >();
00045 Parse();
00046 }
00047
00052 GenericFileReader1D::GenericFileReader1D(const std::string& sFileName,long lNbColumns,long lNbLines) : FileReader(sFileName,lNbColumns,lNbLines)
00053 {
00054 _mColumnsVector = new vector< double* >();
00055 _mColumnsNameVector = new vector< std::string >();
00056 Parse();
00057 }
00058
00059
00061 void GenericFileReader1D::Parse()
00062 {
00063
00064 int iNbData = getNbData();
00065 if(Interpolator::_verb == true) cout << "NbData : " << iNbData << endl;
00066
00067 int iNbVariables = getNbVariables();
00068 if(Interpolator::_verb == true) cout << "NbVariables : " << iNbVariables << endl;
00069
00070
00071 std::string sColumnName;
00072
00073 int i=0;
00074
00075 for (i=0;i<iNbVariables;i++)
00076 {
00077 sColumnName = extractString();
00078 _mColumnsNameVector->push_back(sColumnName);
00079 if(Interpolator::_verb == true) cout << "Column " << i << " --> " << (*_mColumnsNameVector)[i] << endl;
00080
00081 _mColumnsVector->push_back(new double[iNbData]);
00082
00083 }
00084
00085 double dValue;
00086
00087 for (i=0;i<iNbData;i++)
00088 {
00089 for (int j=0;j<iNbVariables;j++)
00090 {
00091 dValue = extractDouble();
00092
00093 ((*_mColumnsVector)[j])[i] = dValue;
00094
00095 }
00096
00097 }
00098 displayAll();
00099
00100 }
00101
00102
00106 double* GenericFileReader1D::getColumn(int iColumnNumber) const
00107 {
00108 if ((iColumnNumber < 0) || (iColumnNumber >= (int)_mColumnsVector->size())) throw IndexOutOfBoundException("iColumnNumber",iColumnNumber,0,getNbData(),"GenericFileReader1D::getColumn(int iColumnNumber)",__FILE__,__LINE__);
00109
00110 if (_mColumnsVector == 0) throw NullPointerException("_mColumnsVector","GenericFileReader1D::getColumn(int iColumnNumber)",__FILE__,__LINE__);
00111 return ((*_mColumnsVector)[iColumnNumber]);
00112 }
00113
00117 std::string GenericFileReader1D::getColumnName(int iColumnNumber) const
00118 {
00119 if ((iColumnNumber < 0) || (iColumnNumber >= (int)_mColumnsNameVector->size())) throw IndexOutOfBoundException("iColumnNumber",iColumnNumber,0,getNbData(),"GenericFileReader1D::getColumnName(int iColumnNumber)",__FILE__,__LINE__);
00120
00121 if (_mColumnsNameVector == 0) throw NullPointerException("_mColumnsNameVector","GenericFileReader1D::getColumnName(int iColumnNumber)",__FILE__,__LINE__);
00122 return ((*_mColumnsNameVector)[iColumnNumber]);
00123 }
00124
00128 double GenericFileReader1D::getValue(int iColumnNumber,int iLineNumber) const
00129 {
00130 if ((iColumnNumber < 0) || (iColumnNumber >= (int)_mColumnsVector->size())) throw IndexOutOfBoundException("iColumnNumber",iColumnNumber,0,getNbVariables(),"GenericFileReader1D::getValue(int iColumnNumber,int jLineNumber)",__FILE__,__LINE__);
00131 if ((iLineNumber < 0) || (iLineNumber >= getNbData())) throw IndexOutOfBoundException("iLineNumber",iLineNumber,0,getNbData(),"GenericFileReader1D::getValue(int iColumnNumber,int jLineNumber)",__FILE__,__LINE__);
00132
00133 if (_mColumnsVector == 0) throw NullPointerException("_mColumnsVector","GenericFileReader1D::getValue(int iColumnNumber,int jLineNumber)",__FILE__,__LINE__);
00134
00135 return ((*_mColumnsVector)[iColumnNumber])[iLineNumber];
00136 }
00137
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00153 void GenericFileReader1D::displayAll()
00154 {
00155 for (int i=0;i<getNbVariables();i++)
00156 {
00157 if(Interpolator::_verb == true) cout << "Column : " << i << " --> " << (*_mColumnsNameVector)[i] << endl;
00158 }
00159
00160 for (int j=0;j<getNbData();j++)
00161 {
00162 if(Interpolator::_verb == true) cout << "[" << j << "=\t";
00163 for (int i=0;i<getNbVariables();i++)
00164 {
00165 if(Interpolator::_verb == true) cout << getValue(i,j) << "\t";
00166 }
00167 if(Interpolator::_verb == true) cout << "]" << endl;
00168 }
00169 }
00170
00171
00172
00173
00174
00175
00176 }
00177