source: Sophya/trunk/SophyaExt/FitsIOServer/fitsbntbllinereader.cc@ 1193

Last change on this file since 1193 was 1193, checked in by ansari, 25 years ago

amelioration lecture ligne a ligne

File size: 2.7 KB
Line 
1#include "pexceptions.h"
2#include "fitsbntbllinereader.h"
3#include "utils.h"
4///////////////////////////////////////////////////////////
5//
6//
7///////////////////////////////////////////////////////////
8
9
10#define LONNOM 31
11
12
13FITS_BntblLineReader::FITS_BntblLineReader()
14{
15 InitNull();
16}
17
18FITS_BntblLineReader::FITS_BntblLineReader(char inputfile[],int hdunum)
19{
20 InitNull();
21
22 // FitsFile* fn=ReadFInit(inputfile,hdunum);
23 // ReadFInit(inputfile,hdunum);
24 inFits_ = new FitsInFile (inputfile);
25 inFits_->ReadFInit(hdunum);
26
27 // if (!fn->IsFitsTable())
28 if (!inFits_->IsFitsTable())
29 {
30 throw PException("FITS_BntblLineReader: the fits file seems not to be a bintable nor ASCII table");
31 }
32
33 //
34 int nbcols, nbentries;
35 // nbcols = fn->NbColsFromFits();
36 nbcols = inFits_->NbColsFromFits();
37 nbentries = 0;
38 int k;
39 // for (k=0; k<nbcols; k++) nbentries=max( nbentries, fn->NentriesFromFits(k) );
40 for (k=0; k<nbcols; k++) nbentries=max( nbentries, inFits_->NentriesFromFits(k) );
41
42 //
43 // pour mettre les colonnes dans l'ordre double, float, int, char :
44 // tableau de correspondance
45 // DfitsCol(j)= numero dans le fichier fits de la jeme variable double du
46 // xntuple;
47 // FfitsCol(j)= numero dans le fichier fits de la jeme variable float du
48 // xntuple;
49 // etc.
50 vector<int> DfitsCol;
51 vector<int> FfitsCol;
52 vector<int> IfitsCol;
53 vector<int> SfitsCol;
54 for (k=0; k<nbcols;k++)
55 {
56 // char ss= fn->ColTypeFromFits(k);
57 char ss= inFits_->ColTypeFromFits(k);
58 if (ss == 'D') DfitsCol.push_back(k);
59 else if (ss == 'E') FfitsCol.push_back(k);
60 else if (ss == 'I') IfitsCol.push_back(k);
61 else if (ss == 'S') SfitsCol.push_back(k);
62 else {
63 cout << " FITS_XNTuple: colonne fits " << k << " type= " << ss << endl;
64 throw IOExc("type de champ inconnu");
65 }
66 }
67 vector<string> ColN(nbcols);
68 int compt=0;
69 for (k=0; k<DfitsCol.size(); k++)
70 {
71 ColN[compt] = inFits_->ColNameFromFits(DfitsCol[k]);
72 }
73 for (k=0; k<FfitsCol.size(); k++)
74 {
75 ColN[compt] = inFits_->ColNameFromFits(FfitsCol[k]);
76 }
77 for (k=0; k<IfitsCol.size(); k++)
78 {
79 ColN[compt] = inFits_->ColNameFromFits(IfitsCol[k]);
80 }
81 for (k=0; k<SfitsCol.size(); k++)
82 {
83 ColN[compt] = inFits_->ColNameFromFits(SfitsCol[k]);
84 }
85
86 ligne_.setFormat(DfitsCol.size(), FfitsCol.size(), IfitsCol.size(), SfitsCol.size(), ColN);
87}
88
89
90FITS_BntblLineReader::~FITS_BntblLineReader()
91{
92 if (inFits_ != NULL) delete inFits_;
93}
94
95BnTblLine& FITS_BntblLineReader::ReadNextLine()
96{
97 inFits_->GetBinTabLine(nextLineToBeRead_++, ligne_);
98 return ligne_;
99}
100
101
102void FITS_BntblLineReader::ReadFromFits(FitsInFile&)
103{
104}
105
106void FITS_BntblLineReader::WriteToFits(FitsOutFile&)
107{
108}
Note: See TracBrowser for help on using the repository browser.