source: Sophya/trunk/SophyaLib/SkyMap/fiospherehealpix.cc@ 2016

Last change on this file since 2016 was 1955, checked in by ansari, 24 years ago

Suppression print de debug ds FIO_SphereHEALPix<T> - Reza 28/3/2002

File size: 4.2 KB
Line 
1// G. Le Meur 04/2000
2
3#include "fiospherehealpix.h"
4#include "pexceptions.h"
5#include "fiondblock.h"
6#include "datatype.h"
7#include <typeinfo>
8
9//*******************************************************************
10// Class FIO_SphereHEALPix<T>
11// Les objets delegues pour la gestion de persistance
12//*******************************************************************
13
14template <class T>
15FIO_SphereHEALPix<T>::FIO_SphereHEALPix()
16{
17 dobj_= new SphereHEALPix<T>;
18 ownobj= true;
19}
20
21template <class T>
22FIO_SphereHEALPix<T>::FIO_SphereHEALPix(string const& filename)
23{
24 dobj_= new SphereHEALPix<T>;
25 ownobj= true;
26 Read(filename);
27}
28
29template <class T>
30FIO_SphereHEALPix<T>::FIO_SphereHEALPix(const SphereHEALPix<T>& obj)
31{
32 dobj_= new SphereHEALPix<T>(obj, true);
33 ownobj= true;
34}
35
36template <class T>
37FIO_SphereHEALPix<T>::FIO_SphereHEALPix(SphereHEALPix<T>* obj)
38{
39 dobj_= obj;
40 ownobj= false;
41}
42
43template <class T>
44FIO_SphereHEALPix<T>::~FIO_SphereHEALPix()
45{
46 if (ownobj && dobj_) delete dobj_;
47}
48
49template <class T>
50AnyDataObj* FIO_SphereHEALPix<T>::DataObj()
51{
52 return(dobj_);
53}
54
55template <class T>
56void FIO_SphereHEALPix<T>::SetDataObj(AnyDataObj & o)
57{
58 SphereHEALPix<T> * po = dynamic_cast< SphereHEALPix<T> * >(&o);
59 if (po == NULL) {
60 char buff[160];
61 sprintf(buff,"FIO_SphereHEALPix<%s>::SetDataObj(%s) - Object type error ! ",
62 DataTypeInfo<T>::getTypeName().c_str(), typeid(o).name());
63 throw TypeMismatchExc(PExcLongMessage(buff));
64 }
65 if (ownobj && dobj_) delete dobj_;
66 dobj_ = po; ownobj = false;
67}
68
69template <class T>
70void FIO_SphereHEALPix<T>::ReadSelf(PInPersist& is)
71{
72
73 if(dobj_ == NULL)
74 {
75 dobj_= new SphereHEALPix<T>;
76 ownobj= true;
77 }
78
79// On lit les 3 premiers uint_8
80uint_8 itab[3];
81is.Get(itab, 3);
82// Let's Read the SphereCoordSys object -- ATTENTIOn - $CHECK$
83 FIO_SphereCoordSys fio_scs( dobj_->GetCoordSys());
84 fio_scs.Read(is);
85 // Pour savoir s'il y avait un DVList Infodobj->Info(); associe
86 char strg[256];
87 is.GetLine(strg, 255);
88 bool hadinfo= false;
89 if(strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0) hadinfo= true;
90 if(hadinfo)
91 { // Lecture eventuelle du DVList Info
92 is >> dobj_->Info();
93 }
94
95 int_4 nSide;
96 is.GetI4(nSide);
97 int_4 nPix;
98 is.GetI4(nPix);
99 double Omega;
100 is.GetR8(Omega);
101 dobj_->setParameters(nSide,nPix, Omega);
102
103// On lit les DataBlocks;
104 FIO_NDataBlock<T> fio_nd(&dobj_->pixels_);
105 fio_nd.Read(is);
106 FIO_NDataBlock<int_4> fio_ndi1(&dobj_->sliceBeginIndex_);
107 fio_ndi1.Read(is);
108 FIO_NDataBlock<int_4> fio_ndi2(&dobj_->sliceLenght_);
109 fio_ndi2.Read(is);
110
111
112}
113
114template <class T>
115void FIO_SphereHEALPix<T>::WriteSelf(POutPersist& os) const
116{
117 if(dobj_ == NULL)
118 {
119 cout << " WriteSelf:: dobj_= null " << endl;
120 return;
121 }
122
123// On ecrit 3 uint_8
124// 0 : Numero de version, 1 : Size index, 2 reserve a l
125uint_8 itab[3];
126itab[0] = 1;
127itab[1] = dobj_->SizeIndex();
128itab[2] = 0;
129os.Put(itab, 3);
130// Let's write the SphereCoordSys object
131 FIO_SphereCoordSys fio_scs( dobj_->GetCoordSys());
132 fio_scs.Write(os);
133
134 char strg[256];
135 int_4 nSide= dobj_->SizeIndex();
136 int_4 nPix = dobj_->NbPixels();
137
138 if(dobj_->ptrInfo())
139 {
140 sprintf(strg,"SphereHEALPix: NSide=%6d NPix=%9d HasInfo",nSide,nPix);
141 os.PutLine(strg);
142 os << dobj_->Info();
143 }
144 else
145 {
146 sprintf(strg,"SphereHEALPix: NSide=%6d NPix=%9d ",nSide,nPix);
147 os.PutLine(strg);
148 }
149
150 os.PutI4(nSide);
151 os.PutI4(nPix);
152 os.PutR8(dobj_->PixSolAngle());
153// On ecrit les dataBlocks
154 FIO_NDataBlock<T> fio_nd(&dobj_->pixels_);
155 fio_nd.Write(os);
156 FIO_NDataBlock<int_4> fio_ndi1(&dobj_->sliceBeginIndex_);
157 fio_ndi1.Write(os);
158 FIO_NDataBlock<int_4> fio_ndi2(&dobj_->sliceLenght_);
159 fio_ndi2.Write(os);
160}
161
162//*******************************************************************
163
164#ifdef __CXX_PRAGMA_TEMPLATES__
165#pragma define_template FIO_SphereHEALPix<r_8>
166#pragma define_template FIO_SphereHEALPix<r_4>
167#pragma define_template FIO_SphereHEALPix< complex<r_4> >
168#pragma define_template FIO_SphereHEALPix< complex<r_8> >
169#endif
170#if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
171template class FIO_SphereHEALPix<r_8>;
172template class FIO_SphereHEALPix<r_4>;
173template class FIO_SphereHEALPix< complex<r_4> >;
174template class FIO_SphereHEALPix< complex<r_8> >;
175#endif
Note: See TracBrowser for help on using the repository browser.