GenericFileReader1D.cpp

Go to the documentation of this file.
00001 // GenericFileReader1D1D.cpp: implementation of the GenericFileReader1D class.
00002 //
00004 
00005 #ifdef WIN32 
00006 #pragma warning(disable:4786)
00007 #endif
00008 #include "GenericFileReader1D.h"
00009 
00011 // Construction/Destruction
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() // throw (ParseException)
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 //Reading of the first line to extract the variables names
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   // throw (IndexOutOfBoundException,NullPointerException)
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   // throw (IndexOutOfBoundException,NullPointerException)
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   // throw (IndexOutOfBoundException,NullPointerException)
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 /*void GenericFileReader1D::displayAll()
00140 {
00141         for (int i=0;i<getNbVariables();i++)
00142         {
00143                 if(Interpolator::_verb == true) cout << "Column : " << i << " --> " << (*_mColumnsNameVector)[i] << endl;
00144                 for (int j=0;j<getNbData();j++)
00145                 {
00146                         if(Interpolator::_verb == true) cout << "[" << j << "=" << getValue(i,j) << "]" << endl;
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 

Generated on Tue Apr 14 09:50:27 2009 for Interpolator Library by  doxygen 1.4.5