Changeset 2130 in Sophya for trunk/SophyaExt


Ignore:
Timestamp:
Jul 24, 2002, 12:05:11 PM (23 years ago)
Author:
lemeur
Message:

ouverture FitsBTNtuIntf au lieu de XNTUPLE pour grose BINTABLE

Location:
trunk/SophyaExt/FitsIOServer
Files:
2 edited

Legend:

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

    r1371 r2130  
    1919  InitNull();
    2020  inFits_  = new FitsInFile (inputfile);
     21  filename_ = string(inputfile);
    2122}
    2223FITS_AutoReader::FITS_AutoReader(string const & inputfile)
     
    2425  InitNull();
    2526  inFits_  = new FitsInFile (inputfile);
     27  filename_ = inputfile;
    2628}
    2729FITS_AutoReader::~FITS_AutoReader()
     
    3638}
    3739
    38 AnyDataObj* FITS_AutoReader::ReadObject(int hdunum) const
     40 // parametre toutCharger : uniquement pour les BINTABLE et s'il ne
     41 // s'agit pas explicitement d'un objet SOPHYA, on charge toute la
     42 // table en memoire sous forme d'un xntuple si toutCharger= true.
     43 // et si le nombre d'entrees est superieur a 1000.
     44 // sinon (c-a-d : il ne s'agit pas d'un objet connu de SOPHYA
     45 //                c'est une BINTABLE avec plus de 1000 entrees
     46 //                totuCharger = false)
     47 // on ouvre une FitsBTNtuIntf (lecture ulterieure, bufferisee, des valeurs)
     48AnyDataObj* FITS_AutoReader::ReadObject(int hdunum, bool toutCharger) const
    3949{
    4050  if (hdunum<=0)
     
    8090    }
    8191  // si c'est une bintable on cherche le mot cle ORDERING pour identifier
    82   // une spherehelpix
     92  // une spherehealpix
    8393  else if (inFits_->IsFitsTable())
    8494    {
     
    97107          }
    98108        if (index == 0)  return newNTuple();
    99         else return newXNTuple();
     109        else
     110          {
     111            if (!toutCharger )
     112              {
     113                int maxEntries=0;
     114                for (int k=0; k < inFits_->NbColsFromFits(); k++)
     115                  {
     116                    if (inFits_->NentriesFromFits(k) > maxEntries ) maxEntries =  inFits_->NentriesFromFits(k);
     117                  }
     118                if ( maxEntries > 1000) return newFitsBTNtuIntf(hdunum);
     119                else return newXNTuple();
     120              }
     121            else  return newXNTuple();
     122
     123          }
    100124      }
    101125    }
     
    230254}
    231255
     256FitsBTNtuIntf* FITS_AutoReader::newFitsBTNtuIntf(int hdunum) const
     257{
     258      FitsBTNtuIntf* btnptr = new FitsBTNtuIntf(filename_,hdunum);
     259      return btnptr;
     260}
     261
  • trunk/SophyaExt/FitsIOServer/fitsautoreader.h

    r1334 r2130  
    1313#include "fitsxntuple.h"
    1414#include "fitslocalmap.h"
     15#include "fbtntintf.h"
    1516
    1617namespace SOPHYA {
     
    3031virtual ~FITS_AutoReader();
    3132 int NbBlocks();
    32 AnyDataObj* ReadObject(int hdunum) const;
     33
     34 // parametre toutCharger : uniquement pour les BINTABLE et s'il ne
     35 // s'agit pas explicitement d'un objet SOPHYA, on charge toute la
     36 // table en memoire sous forme d'un xntuple si toutCharger= true.
     37 // et si le nombre d'entrees est superieur a 1000.
     38 // sinon (c-a-d : il ne s'agit pas d'un objet connu de SOPHYA
     39 //                c'est une BINTABLE avec plus de 1000 entrees
     40 //                totuCharger = false)
     41 // on ouvre une FitsBTNtuIntf (lecture ulterieure, bufferisee, des valeurs)
     42AnyDataObj* ReadObject(int hdunum, bool toutCharger = false) const;
    3343
    3444
     
    4050NTuple* newNTuple() const;
    4151XNTuple* newXNTuple() const;
     52 FitsBTNtuIntf* newFitsBTNtuIntf(int hdunum) const;
    4253inline void InitNull()
    4354   {
     
    4758   }
    4859
     60
     61 string filename_;
    4962FitsInFile* inFits_;
    5063AnyDataObj* dobj_;
Note: See TracChangeset for help on using the changeset viewer.