source: Sophya/trunk/SophyaPI/ProgPI/fitsbtadapter.cc@ 2189

Last change on this file since 2189 was 1506, checked in by cmv, 24 years ago

intro module fitsbtadapter cmv 22/5/01

File size: 3.9 KB
Line 
1/* Interface Fits BINARY/ASCII Table cmv 21/05/2001 */
2#include "machdefs.h"
3#include <stdlib.h>
4#include <stdio.h>
5#include <typeinfo>
6#include <iostream.h>
7#include <string.h>
8#include <string>
9
10#include "nobjmgr.h"
11#include "servnobjm.h"
12#include "nomgadapter.h"
13#include "pistdimgapp.h"
14#include "fbtntintf.h"
15
16////////////////////////////////////////////////////////////
17class NOMAdapter_FitsBT : public NObjMgrAdapter {
18public:
19 NOMAdapter_FitsBT(FitsBTNtuIntf* o = NULL);
20 virtual ~NOMAdapter_FitsBT();
21
22 virtual NObjMgrAdapter* Clone(AnyDataObj* o);
23 virtual string GetDataObjType();
24 virtual AnyDataObj* CloneDataObj(bool share=false);
25 virtual void SavePPF(POutPersist& s, string const & nom);
26 virtual void Print(ostream& os);
27 virtual NTupleInterface* GetNTupleInterface(bool& adel);
28
29protected:
30 FitsBTNtuIntf* mFBT;
31};
32
33////////////////////////////////////////////////////////////
34NOMAdapter_FitsBT::NOMAdapter_FitsBT(FitsBTNtuIntf* o)
35 : NObjMgrAdapter(o)
36{
37mFBT = o;
38}
39
40NOMAdapter_FitsBT::~NOMAdapter_FitsBT()
41{
42}
43
44NObjMgrAdapter* NOMAdapter_FitsBT::Clone(AnyDataObj* o)
45{
46FitsBTNtuIntf* g = dynamic_cast<FitsBTNtuIntf *>(o);
47if(g) return ( new NOMAdapter_FitsBT(g) );
48return ( new NObjMgrAdapter(o) );
49}
50
51string NOMAdapter_FitsBT::GetDataObjType()
52{
53return( "FitsBTNtuIntf " );
54}
55
56AnyDataObj* NOMAdapter_FitsBT::CloneDataObj(bool /*share*/)
57{
58return( new FitsBTNtuIntf(*mFBT) );
59}
60
61void NOMAdapter_FitsBT::SavePPF(POutPersist& pos, string const & nom)
62{
63cout<<"NOMAdapter_FitsBT::SavePPF: not implemented"<<endl;
64}
65
66void NOMAdapter_FitsBT::Print(ostream& os)
67{
68mFBT->Print(os,99);
69}
70
71NTupleInterface* NOMAdapter_FitsBT::GetNTupleInterface(bool& adel)
72{
73adel = false;
74return(mFBT);
75}
76
77////////////////////////////////////////////////////////////
78////////////////////////////////////////////////////////////
79/////////////////////////////////////////////////////////////
80///////////////////////////////////////////////////////////
81extern "C" {
82void fitsbtadapter_init();
83void fitsbtadapter_end();
84}
85
86class fitsbtadapterExecutor : public CmdExecutor {
87public:
88 fitsbtadapterExecutor();
89 virtual ~fitsbtadapterExecutor();
90 virtual int Execute(string& keyw, vector<string>& args, string& toks);
91};
92
93///////////////////////////////////////////////////////////
94fitsbtadapterExecutor::fitsbtadapterExecutor()
95{
96NamedObjMgr omg;
97PIACmd * mpiac = omg.GetImgApp()->CmdInterpreter();
98
99// On enregistre l'adaptateur
100Services2NObjMgr* serv = omg.GetServiceObj();
101serv->RegisterClass(new FitsBTNtuIntf, new NOMAdapter_FitsBT);
102
103// On enregistre la commande
104string hgrp = "FileIO";
105string kw = "fitsadapt";
106string usage = "fitsadapt: NTuple adaptor for Binary and ASCII Fits table\n" ;
107usage += "Usage: fitsadapt fitsfile [hdu buflen[,bufsens,lp]]";
108usage += "\n fitsfile : Fits file name";
109usage += "\n hdu : Fits HDU (if <=0 take first binary/ascii table)";
110usage += "\n buflen[,bufsens,lp] : buffer length (sens) for fits reading (default is 100,1,0)";
111mpiac->RegisterCommand(kw, usage, this, hgrp);
112}
113
114fitsbtadapterExecutor::~fitsbtadapterExecutor()
115{
116}
117
118int fitsbtadapterExecutor::Execute(string& kw, vector<string>& tokens, string&)
119{
120NamedObjMgr omg;
121if(kw == "fitsadapt") {
122 if(tokens.size()<1)
123 {cout<<"Usage: fitsadapt fitsfile [hdu buflen[,bufsens]]"<<endl;
124 return(0);}
125 int ihdu=0;
126 int_4 buflen=100, bufsens=1, lp=0;
127 string fname = tokens[0];
128 if(tokens.size()>1) sscanf(tokens[1].c_str(),"%d",&ihdu);
129 if(tokens.size()>2) sscanf(tokens[2].c_str(),"%d,%d,%d",&buflen,&bufsens,&lp);
130 FitsBTNtuIntf* fbt = new FitsBTNtuIntf(fname,ihdu,buflen,bufsens,lp);
131 fname = omg.GetServiceObj()->FileName2Name(fname);
132 omg.AddObj(fbt,fname);
133 }
134 return(0);
135}
136
137///////////////////////////////////////////////////////////
138static fitsbtadapterExecutor * piafbtex = NULL;
139
140void fitsbtadapter_init()
141{
142if(piafbtex) delete piafbtex;
143piafbtex = new fitsbtadapterExecutor;
144}
145
146void fitsbtadapter_end()
147{
148if(piafbtex) delete piafbtex;
149piafbtex = NULL;
150}
Note: See TracBrowser for help on using the repository browser.