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

Last change on this file since 2735 was 2615, checked in by cmv, 21 years ago

using namespace sophya enleve de machdefs.h, nouveau sopnamsp.h cmv 10/09/2004

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