Ignore:
Timestamp:
Sep 24, 2002, 4:03:36 PM (23 years ago)
Author:
lemeur
Message:

toilette d'ete : rationalisation de types...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fitsxntuple.cc

    r1499 r2197  
    8686  for (k=0; k<nbcols;k++)
    8787    {
     88
    8889      FitsFile::FitsDataType ss= is.ColTypeFromFits(k);
    89       if (ss == FitsFile::FitsDataType_double) DfitsCol.push_back(k);
    90       else if (ss == FitsFile::FitsDataType_float) FfitsCol.push_back(k);
    91       else if (ss == FitsFile::FitsDataType_int) IfitsCol.push_back(k);
    92       else if (ss == FitsFile::FitsDataType_long) IfitsCol.push_back(k);
    93       else if (ss == FitsFile::FitsDataType_byte) IfitsCol.push_back(k);
    94       else if (ss == FitsFile::FitsDataType_char) SfitsCol.push_back(k);
    95       else {
    96         cout << " FITS_XNTuple: colonne fits " << k << " type= " << (int) ss << endl;
    97         throw  IOExc("type de champ inconnu");
    98       }
     90      switch (ss)
     91        {
     92        case  FitsFile::FitsDataType_double :
     93          {
     94            DfitsCol.push_back(k);
     95            break;
     96          }
     97        case FitsFile::FitsDataType_float :
     98          {
     99            FfitsCol.push_back(k);
     100            break;
     101          }
     102        case FitsFile::FitsDataType_int :
     103          {
     104            IfitsCol.push_back(k);
     105            break;
     106          }
     107        case FitsFile::FitsDataType_long :
     108          {
     109            IfitsCol.push_back(k);
     110            break;
     111          }
     112        case FitsFile::FitsDataType_byte :
     113          {
     114            IfitsCol.push_back(k);
     115            break;
     116          }
     117        case FitsFile::FitsDataType_char :
     118          {
     119            SfitsCol.push_back(k);
     120            break;
     121          }
     122        default :
     123          {
     124            cout << " FITS_XNTuple: colonne fits " << k << " type= " << (int) ss << endl;
     125            throw  IOExc("type de champ inconnu");
     126          }
     127        }
    99128    }
    100129  char ** ColName = new char*[nbcols];
     
    143172          if (ND != dobj_->NDVar() || NF != dobj_->NFVar() ||  NI != dobj_->NIVar() || NS != dobj_->NSVar())
    144173            {
    145               cout << " WARNING : FITS_XNTuple : XNTuple reconfigured " << endl;
     174              //              cout << " WARNING : FITS_XNTuple : XNTuple reconfigured " << endl;
    146175              (*dobj_)= XNTuple(ND, NF, NI, NS,ColName);
    147176            }
     
    155184  delete [] ColName;
    156185
    157     double* dligne;
    158     float* fligne;
    159     int* iligne;
     186    r_8* dligne;
     187    r_4* fligne;
     188    int_4* iligne;
    160189    char** cligne;
    161190
     
    188217  for (numLigne=firstln; numLigne < lastln; numLigne++)
    189218    {
    190       is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
    191       dobj_->Fill((r_8*)dligne, (r_4*)fligne, (int_4*)iligne, cligne);   
     219      const FitsFile::BufferLine& bfligne = is.GetBufferLine(numLigne);
     220      int k;
     221      int rang;
     222      int dcount =0;
     223      int fcount =0;
     224      int icount =0;
     225      int ccount = 0;
     226      for (k=0; k<nbcols;k++)
     227        {
     228          rang = bfligne.identificateur()[k].second;
     229          switch (bfligne.identificateur()[k].first)
     230            {
     231            case  FitsFile::FitsDataType_double :
     232              {
     233                dligne[dcount++] =  bfligne.r_8Array(rang);
     234                break;
     235              }
     236            case  FitsFile::FitsDataType_float :
     237              {
     238                fligne[fcount++] =  bfligne.r_4Array(rang);
     239                break;
     240              }
     241            case  FitsFile::FitsDataType_short :
     242              {
     243                iligne[icount++] =  bfligne.int_2Array(rang);
     244                break;
     245              }
     246            case  FitsFile::FitsDataType_int :
     247              {
     248                iligne[icount++] =  bfligne.int_4Array(rang);
     249                break;
     250              }
     251            case  FitsFile::FitsDataType_long :
     252              {
     253                iligne[icount++] =  (int_4)bfligne.int_8Array(rang);
     254                break;
     255              }
     256            case  FitsFile::FitsDataType_byte :
     257              {
     258                iligne[icount++] =  (int_4)bfligne.u_charArray(rang);
     259                break;
     260              }
     261            case FitsFile::FitsDataType_char :
     262              {
     263                strncpy( cligne[ccount++], bfligne.stringArray(rang).c_str(),bfligne.stringArray(rang).length());
     264                break;
     265              }
     266
     267            default:
     268              { 
     269                throw PException(" FITS_XNTuple::ReadFromFits : unsupported FITS data type");
     270              }
     271            }
     272       
     273        }
     274      //      is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
     275      //      dobj_->Fill((r_8*)dligne, (r_4*)fligne, (int_4*)iligne, cligne);   
     276      dobj_->Fill(dligne, fligne, iligne, cligne);   
    192277    }
    193278    delete [] dligne;
     
    234319  for (k=0; k<dobj_->NIVar();k++)
    235320    {
    236       types+='I';
     321      types+='J';
    237322    }
    238323  for (k=0; k<dobj_->NSVar();k++)
     
    277362         {
    278363           for(int j = 0; j < nrows; j++) icolumn[j]= dobj_->GetIVal(j,compt);
     364           cout << " fitsx.. va ecrire la colonne " << endl;
     365           for(int j = 0; j < nrows; j++) cout << icolumn[j] << endl;;
     366
    279367           os.PutColToFits(compt, nrows, icolumn);
    280368           compt++;
Note: See TracChangeset for help on using the changeset viewer.