source: Sophya/trunk/SophyaExt/FitsIOServer/fabtwriter.h@ 2130

Last change on this file since 2130 was 1814, checked in by cmv, 24 years ago

lecture/ecriture clefs fits cmv 14/12/01

File size: 3.1 KB
RevLine 
[1654]1/* Interface Fits BINARY/ASCII Table Writer cmv 26/09/2001 */
2#ifndef FABTWRITER_H_SEEN
3#define FABTWRITER_H_SEEN
4
5#include "machdefs.h"
6#include <iostream.h>
7#include <string.h>
8#include <string>
9
10#include "anydataobj.h"
11#include "tvector.h"
12#include "FitsIO/fitsio.h"
13
14#include <vector>
15
16namespace SOPHYA {
17
18//! Class for writing a FITS ASCII or BINARY table
19class FitsABTWriter : public AnyDataObj {
20public:
21 FitsABTWriter(string fname,int hdutype=BINARY_TBL,int lp=0);
22 FitsABTWriter(const char* cfname,int hdutype=BINARY_TBL,int lp=0);
23 virtual ~FitsABTWriter();
24
[1814]25 void Flush(void);
26
27 //! Write a double value in Fits header.
28 void WriteKey(const char *keyname,double val,char* comment=NULL);
29 //! Write a long value in Fits header.
30 void WriteKey(const char *keyname,long val,char* comment=NULL);
31
[1654]32 //! Add a new column to the FITS table and return its number (see addcol).
[1660]33 inline int AddCol(string label,string tform=string("")
34 ,string tunit=string(""),int datatype=TDOUBLE)
35 {return addcol(label.c_str(),tform.c_str(),tunit.c_str(),datatype);}
[1654]36 //! Add a new column to the FITS table and return its number (see addcol).
[1660]37 inline int AddCol(const char* label,const char* tform=""
38 ,const char* tunit="",int datatype=TDOUBLE)
39 {return addcol(label,tform,tunit,datatype);}
[1654]40
41 //! Set the FITS table extension name
42 inline void SetExtName(string extname=string("")) {ExtName = extname;}
43 //! Set the FITS table extension name
44 inline void SetExtName(char* extname="") {ExtName = extname;}
45 //! Set debug level
[1657]46 inline void SetDebug(int lp=0) {DbgLevel = (unsigned short) lp;}
[1654]47
[1657]48 void Write(int col,long row,short val);
49 void Write(int col,long row,int_4 val);
50 void Write(int col,long row,float val);
[1654]51 void Write(int col,long row,double val);
[1657]52 long Write(int col,long row,TVector<int_4>& val);
53 long Write(int col,long row,TVector<float>& val);
54 long Write(int col,long row,TVector<double>& val);
[1654]55 //! Return the number of overflows managed by cfitsio
[1657]56 inline unsigned long GetNOverFlow(void) {return NOverFlow;}
[1654]57
[1673]58 //! Return the number of created columns
59 inline int GetNbCol(void) {return (int) Label.size();}
60
61 //! Print to os
62 virtual void Print(ostream& os,int lp=1) const;
63 //! Print to stdout
64 inline void Print(int lp=1) const {Print(cout,lp);}
65
[1654]66protected:
[1814]67 struct KeyDouble {string keyname; double val; string comment;};
68 struct KeyLong {string keyname; long val; string comment;};
69
[1654]70 void createfits(const char *cfname,int hdutype,int lp);
[1660]71 int addcol(const char* label,const char* tform
72 ,const char* tunit,int datatype);
[1654]73 void createtbl(void);
[1814]74 void writekeys(void);
[1660]75 void printerrorwrite(const char* type,int col,long row,int sta);
[1654]76 void printerror(int sta) const;
77
78 string FitsFN,ExtName;
79 int HduType;
[1657]80 unsigned short DbgLevel;
[1654]81 fitsfile *FitsPtr;
82 bool FirstTime;
83 vector<string> Label;
84 vector<string> TForm;
85 vector<string> TUnit;
[1657]86 unsigned long NOverFlow;
[1814]87
88 vector<struct KeyDouble> DoubleKey;
89 vector<struct KeyLong> LongKey;
[1654]90};
91
92} // namespace SOPHYA
93#endif /* FABTWRITER_H_SEEN */
Note: See TracBrowser for help on using the repository browser.