source: Sophya/trunk/SophyaPI/PIext/nomtarradapter.cc@ 2343

Last change on this file since 2343 was 2343, checked in by ansari, 23 years ago

Compilation avec SGI-CC -LANG:std - Reza 10/03/2003

File size: 7.8 KB
RevLine 
[1315]1#include "machdefs.h"
2#include <stdlib.h>
3#include <typeinfo>
[2322]4#include <iostream>
[1315]5#include <string>
6#include <complex>
7
8#include "datatype.h"
9
10#include "nomtarradapter.h"
[1321]11#include "tvector.h"
12#include "pitvmaad.h"
[1905]13#include "piyfxdrw.h"
[1315]14
15#include "fioarr.h"
[1321]16#include "fitstarray.h"
[1315]17
18
19
20//----------------------------------------------------------------
21// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet TMatrix<T>
22//----------------------------------------------------------------
23
24
25/* --Methode-- */
26template <class T>
27NOMAdapter_TArray<T>::NOMAdapter_TArray(TArray<T>* o)
28 : NObjMgrAdapter(o)
29{
30mArr = o;
31}
32
33/* --Methode-- */
34template <class T>
35NOMAdapter_TArray<T>::~NOMAdapter_TArray()
36{
37}
38
39/* --Methode-- */
40template <class T>
41NObjMgrAdapter* NOMAdapter_TArray<T>::Clone(AnyDataObj* o)
42{
43TArray<T>* a = dynamic_cast<TArray<T> *>(o);
44if (a) return ( new NOMAdapter_TArray<T>(a) );
45return ( new NObjMgrAdapter(o) );
46}
47
48/* --Methode-- */
49template <class T>
50string NOMAdapter_TArray<T>::GetDataObjType()
51{
52string type = "TArray< ";
53
54// type += DecodeTypeIdName(typeid(T).name());
55type += DataTypeInfo<T>::getTypeName();
56type += " > ";
57return(type);
58}
59
60/* --Methode-- */
61template <class T>
62AnyDataObj* NOMAdapter_TArray<T>::CloneDataObj(bool share)
63{
64return ( new TArray<T>(*mArr, share) );
65}
66
67/* --Methode-- */
68template <class T>
[1321]69void NOMAdapter_TArray<T>::ReadFits(string const & flnm)
70{
71 FitsInFile fis(flnm);
72 fis >> (*mArr);
73}
74
75/* --Methode-- */
76template <class T>
77void NOMAdapter_TArray<T>::SaveFits(string const & flnm)
78{
79 FitsOutFile fos(flnm);
80 fos << (*mArr);
81}
82
83// ---- Specialisation pour complexes -----
[2343]84DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1321]85void NOMAdapter_TArray< complex<r_4> >::ReadFits(string const & flnm)
86{
87cout << " NOMAdapter_TArray< complex<r_4> >::ReadFits() - Error "
88 << " Not supported (complex data type)" << endl;
89}
[2343]90DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1321]91void NOMAdapter_TArray< complex<r_4> >::SaveFits(string const & flnm)
92{
93cout << " NOMAdapter_TArray< complex<r_4> >::SaveFits() - Error "
94 << " Not supported (complex data type)" << endl;
95}
96
[2343]97DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1321]98void NOMAdapter_TArray< complex<r_8> >::ReadFits(string const & flnm)
99{
100cout << " NOMAdapter_TArray< complex<r_8> >::ReadFits() - Error "
101 << " Not supported (complex data type)" << endl;
102}
[2343]103DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1321]104void NOMAdapter_TArray< complex<r_8> >::SaveFits(string const & flnm)
105{
106cout << " NOMAdapter_TArray< complex<r_8> >::SaveFits() - Error "
107 << " Not supported (complex data type)" << endl;
108}
109
110/* --Methode-- */
111template <class T>
[1315]112void NOMAdapter_TArray<T>::SavePPF(POutPersist& pos, string const & nom)
113{
114FIO_TArray<T> fio(mArr);
115fio.Write(pos, nom);
116}
117
118/* --Methode-- */
119template <class T>
120void NOMAdapter_TArray<T>::Print(ostream& os)
121{
122os << (*mArr);
123}
124
[1321]125/* --Methode-- */
126template <class T>
127PIDrawer * NOMAdapter_TArray<T>::GetDrawer(string & dopt)
128{
129if (mArr->NbDimensions() == 1) {
130 // On peut en faire un vecteur ...
131 TVector<T>* v = new TVector<T>(*mArr, true); // on partage les donnees
132 dopt = "thinline," + dopt;
133 return( new PIYfXDrawer( new POTVectorAdapter<T>(v, true), NULL, true) );
134}
135 else return(NULL);
136}
[1315]137
138/* --Methode-- */
139template <class T>
[1321]140P2DArrayAdapter* NOMAdapter_TArray<T>::Get2DArray(string &)
141{
142if (mArr->NbDimensions() <= 2) {
143 // On peut en faire un tableau 2-D ...
144 TMatrix<T>* m = new TMatrix<T>(*mArr, true); // on partage les donnees
145 return ( new POTMatrixAdapter<T>(m, true) );
146}
147else return(NULL);
148}
149
150/* --Methode-- */
151template <class T>
[1315]152NTupleInterface* NOMAdapter_TArray<T>::GetNTupleInterface(bool& adel)
153{
154adel = true;
155return( new NTupInt_TArray<T>(mArr) );
156}
157
158
159
160
161// -------------------------------------------------------------
162
163/* --Methode-- */
164template <class T>
165NTupInt_TArray<T>::NTupInt_TArray(TArray<T>* a)
166{
167mArr = a;
168}
169
170/* --Methode-- */
171template <class T>
172NTupInt_TArray<T>::~NTupInt_TArray()
173{
174}
175
176/* --Methode-- */
177template <class T>
178uint_4 NTupInt_TArray<T>::NbLines() const
179{
180return( mArr->Size() );
181}
182
183/* --Methode-- */
184template <class T>
185uint_4 NTupInt_TArray<T>::NbColumns() const
186{
187return(11);
188}
189
190/* --Methode-- */
191template <class T>
192r_8* NTupInt_TArray<T>::GetLineD(int n) const
193{
194if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
195 mRet[0] = n;
196 for(int i=1; i<11; i++) mRet[i] = 0.;
197}
198else {
199 sa_size_t ix, iy, iz, it, iu;
200 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
201 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
202 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
203 mRet[6] = (*mArr)(ix,iy,iz,it,iu);
204 mRet[7] = mRet[2]; mRet[8] = 0.;
205 mRet[9] = mRet[2]; mRet[10] = 0.;
206 }
207return(mRet);
208}
209
210/* --Methode-- */
211template <class T>
212string NTupInt_TArray<T>::VarList_C(const char* nx) const
213{
214string nomx;
215if (nx) nomx = nx;
216else nomx = "_xh_";
217string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n";
218vardec += "n = " + nomx + "[0]; x = " + nomx + "[1]; y = " + nomx + "[2]; \n";
219vardec += "z = " + nomx + "[3]; t = " + nomx + "[4]; u = " + nomx + "[5]; \n";
220vardec += "val = " + nomx + "[6]; \n";
221vardec += "real = " + nomx + "[7]; imag = " + nomx + "[8]; \n";
222vardec += "mod = " + nomx + "[9]; phas = " + nomx + "[10]; \n";
223return(vardec);
224}
225
226/* --Methode-- */
[2343]227DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1315]228r_8* NTupInt_TArray< complex<r_4> >::GetLineD(int n) const
229{
230if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
231 mRet[0] = n;
232 for(int i=1; i<11; i++) mRet[i] = 0.;
233}
234else {
235 sa_size_t ix, iy, iz, it, iu;
236 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
237 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
238 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
239 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
240 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
241 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
242 mRet[7] = atan2(mRet[8], mRet[7]);
243}
244return(mRet);
245}
246
[2343]247DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
[1315]248r_8* NTupInt_TArray< complex<r_8> >::GetLineD(int n) const
249{
250if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
251 mRet[0] = n;
252 for(int i=1; i<11; i++) mRet[i] = 0.;
253}
254else {
255 sa_size_t ix, iy, iz, it, iu;
256 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
257 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
258 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
259 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
260 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
261 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
262 mRet[7] = atan2(mRet[8], mRet[7]);
263}
264return(mRet);
265}
266
267
268#ifdef __CXX_PRAGMA_TEMPLATES__
269//#pragma define_template NOMAdapter_TArray<uint_2>
270//#pragma define_template NOMAdapter_TArray<int_2>
271#pragma define_template NOMAdapter_TArray<int_4>
272#pragma define_template NOMAdapter_TArray<r_4>
273#pragma define_template NOMAdapter_TArray<r_8>
274#pragma define_template NOMAdapter_TArray< complex<r_4> >
275#pragma define_template NOMAdapter_TArray< complex<r_8> >
276//#pragma define_template NTupInt_TArray<uint_2>
277//#pragma define_template NTupInt_TArray<int_2>
278#pragma define_template NTupInt_TArray<int_4>
279#pragma define_template NTupInt_TArray<r_4>
280#pragma define_template NTupInt_TArray<r_8>
281#pragma define_template NTupInt_TArray< complex<r_4> >
282#pragma define_template NTupInt_TArray< complex<r_8> >
283#endif
284
285#if defined(ANSI_TEMPLATES)
286//template class NOMAdapter_TArray<uint_2>;
287//template class NOMAdapter_TArray<int_2>;
288template class NOMAdapter_TArray<int_4>;
289template class NOMAdapter_TArray<r_4>;
290template class NOMAdapter_TArray<r_8>;
291template class NOMAdapter_TArray< complex<r_4> >;
292template class NOMAdapter_TArray< complex<r_8> >;
293// template class NTupInt_TArray<uint_2>;
294// template class NTupInt_TArray<int_2>;
295template class NTupInt_TArray<int_4>;
296template class NTupInt_TArray<r_4>;
297template class NTupInt_TArray<r_8>;
298template class NTupInt_TArray< complex<r_4> >;
299template class NTupInt_TArray< complex<r_8> >;
300#endif
Note: See TracBrowser for help on using the repository browser.