#include "pexceptions.h" #include "fitsbntbllinereader.h" /////////////////////////////////////////////////////////// // // /////////////////////////////////////////////////////////// #define LONNOM 31 FITS_BntblLineReader::FITS_BntblLineReader() { InitNull(); } FITS_BntblLineReader::FITS_BntblLineReader(char inputfile[],int hdunum) { InitNull(); // FitsFile* fn=ReadFInit(inputfile,hdunum); ReadFInit(inputfile,hdunum); // if (!fn->IsFitsTable()) if (!IsFitsTable()) { throw PException("FITS_BntblLineReader: the fits file seems not to be a bintable nor ASCII table"); } // int nbcols, nbentries; // nbcols = fn->NbColsFromFits(); nbcols = NbColsFromFits(); nbentries = 0; int k; // for (k=0; kNentriesFromFits(k) ); for (k=0; k DfitsCol; vector FfitsCol; vector IfitsCol; vector SfitsCol; for (k=0; kColTypeFromFits(k); char ss= ColTypeFromFits(k); if (ss == 'D') DfitsCol.push_back(k); else if (ss == 'E') FfitsCol.push_back(k); else if (ss == 'I') IfitsCol.push_back(k); else if (ss == 'S') SfitsCol.push_back(k); else { cout << " FITS_XNTuple: colonne fits " << k << " type= " << ss << endl; throw IOExc("type de champ inconnu"); } } ColName_ = new char*[nbcols]; int compt=0; for (k=0; kColNameFromFits(DfitsCol[k]).c_str(), LONNOM); strncpy(ColName_[compt], ColNameFromFits(DfitsCol[k]).c_str(), LONNOM); ColName_[compt++][ LONNOM] = '\0'; } for (k=0; kColNameFromFits(FfitsCol[k]).c_str(), LONNOM); strncpy(ColName_[compt], ColNameFromFits(FfitsCol[k]).c_str(), LONNOM); ColName_[compt++][ LONNOM] = '\0'; } for (k=0; kColNameFromFits(IfitsCol[k]).c_str(), LONNOM); strncpy(ColName_[compt], ColNameFromFits(IfitsCol[k]).c_str(), LONNOM); ColName_[compt++][ LONNOM] = '\0'; } for (k=0; kColNameFromFits(SfitsCol[k]).c_str(), LONNOM); strncpy(ColName_[compt], ColNameFromFits(SfitsCol[k]).c_str(), LONNOM); ColName_[compt++][LONNOM] = '\0'; } if (DfitsCol.size()>0) { dcount_ = DfitsCol.size(); ddata_ = new double[dcount_]; } if (FfitsCol.size()>0) { fcount_ = FfitsCol.size(); fdata_ = new float[fcount_]; } if (IfitsCol.size()>0) { icount_ = IfitsCol.size(); idata_ = new int[icount_]; } if (SfitsCol.size()>0) { ccount_ = SfitsCol.size(); cdata_ = new char*[ccount_]; taille_des_chaines_ = 0; // for (k=0; k< ccount_; k++) taille_des_chaines_ = max( taille_des_chaines_, fn->ColStringLengthFromFits(SfitsCol[k]) ); for (k=0; k< ccount_; k++) taille_des_chaines_ = max( taille_des_chaines_, ColStringLengthFromFits(SfitsCol[k]) ); for (k=0; k