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

Last change on this file since 1315 was 1315, checked in by ercodmgr, 25 years ago

Adaptateur pour TArray et flag share ds methode CloneDataObj() - Reza 9/11/2000

File size: 5.6 KB
RevLine 
[1315]1#include "machdefs.h"
2#include <stdlib.h>
3#include <typeinfo>
4#include <iostream.h>
5#include <string>
6#include <complex>
7
8#include "datatype.h"
9
10#include "nomtarradapter.h"
11
12#include "fioarr.h"
13
14
15
16//----------------------------------------------------------------
17// Class Adaptateur d'objet (Pour NamedObjMgr) d'objet TMatrix<T>
18//----------------------------------------------------------------
19
20
21/* --Methode-- */
22template <class T>
23NOMAdapter_TArray<T>::NOMAdapter_TArray(TArray<T>* o)
24 : NObjMgrAdapter(o)
25{
26mArr = o;
27}
28
29/* --Methode-- */
30template <class T>
31NOMAdapter_TArray<T>::~NOMAdapter_TArray()
32{
33}
34
35/* --Methode-- */
36template <class T>
37NObjMgrAdapter* NOMAdapter_TArray<T>::Clone(AnyDataObj* o)
38{
39TArray<T>* a = dynamic_cast<TArray<T> *>(o);
40if (a) return ( new NOMAdapter_TArray<T>(a) );
41return ( new NObjMgrAdapter(o) );
42}
43
44/* --Methode-- */
45template <class T>
46string NOMAdapter_TArray<T>::GetDataObjType()
47{
48string type = "TArray< ";
49
50// type += DecodeTypeIdName(typeid(T).name());
51type += DataTypeInfo<T>::getTypeName();
52type += " > ";
53return(type);
54}
55
56/* --Methode-- */
57template <class T>
58AnyDataObj* NOMAdapter_TArray<T>::CloneDataObj(bool share)
59{
60return ( new TArray<T>(*mArr, share) );
61}
62
63/* --Methode-- */
64template <class T>
65void NOMAdapter_TArray<T>::SavePPF(POutPersist& pos, string const & nom)
66{
67FIO_TArray<T> fio(mArr);
68fio.Write(pos, nom);
69}
70
71/* --Methode-- */
72template <class T>
73void NOMAdapter_TArray<T>::Print(ostream& os)
74{
75os << (*mArr);
76}
77
78
79/* --Methode-- */
80template <class T>
81NTupleInterface* NOMAdapter_TArray<T>::GetNTupleInterface(bool& adel)
82{
83adel = true;
84return( new NTupInt_TArray<T>(mArr) );
85}
86
87
88
89
90// -------------------------------------------------------------
91
92/* --Methode-- */
93template <class T>
94NTupInt_TArray<T>::NTupInt_TArray(TArray<T>* a)
95{
96mArr = a;
97}
98
99/* --Methode-- */
100template <class T>
101NTupInt_TArray<T>::~NTupInt_TArray()
102{
103}
104
105/* --Methode-- */
106template <class T>
107uint_4 NTupInt_TArray<T>::NbLines() const
108{
109return( mArr->Size() );
110}
111
112/* --Methode-- */
113template <class T>
114uint_4 NTupInt_TArray<T>::NbColumns() const
115{
116return(11);
117}
118
119/* --Methode-- */
120template <class T>
121r_8* NTupInt_TArray<T>::GetLineD(int n) const
122{
123if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
124 mRet[0] = n;
125 for(int i=1; i<11; i++) mRet[i] = 0.;
126}
127else {
128 sa_size_t ix, iy, iz, it, iu;
129 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
130 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
131 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
132 mRet[6] = (*mArr)(ix,iy,iz,it,iu);
133 mRet[7] = mRet[2]; mRet[8] = 0.;
134 mRet[9] = mRet[2]; mRet[10] = 0.;
135 }
136return(mRet);
137}
138
139/* --Methode-- */
140template <class T>
141string NTupInt_TArray<T>::VarList_C(const char* nx) const
142{
143string nomx;
144if (nx) nomx = nx;
145else nomx = "_xh_";
146string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n";
147vardec += "n = " + nomx + "[0]; x = " + nomx + "[1]; y = " + nomx + "[2]; \n";
148vardec += "z = " + nomx + "[3]; t = " + nomx + "[4]; u = " + nomx + "[5]; \n";
149vardec += "val = " + nomx + "[6]; \n";
150vardec += "real = " + nomx + "[7]; imag = " + nomx + "[8]; \n";
151vardec += "mod = " + nomx + "[9]; phas = " + nomx + "[10]; \n";
152return(vardec);
153}
154
155/* --Methode-- */
156r_8* NTupInt_TArray< complex<r_4> >::GetLineD(int n) const
157{
158if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
159 mRet[0] = n;
160 for(int i=1; i<11; i++) mRet[i] = 0.;
161}
162else {
163 sa_size_t ix, iy, iz, it, iu;
164 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
165 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
166 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
167 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
168 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
169 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
170 mRet[7] = atan2(mRet[8], mRet[7]);
171}
172return(mRet);
173}
174
175r_8* NTupInt_TArray< complex<r_8> >::GetLineD(int n) const
176{
177if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
178 mRet[0] = n;
179 for(int i=1; i<11; i++) mRet[i] = 0.;
180}
181else {
182 sa_size_t ix, iy, iz, it, iu;
183 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
184 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
185 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
186 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
187 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
188 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
189 mRet[7] = atan2(mRet[8], mRet[7]);
190}
191return(mRet);
192}
193
194
195#ifdef __CXX_PRAGMA_TEMPLATES__
196//#pragma define_template NOMAdapter_TArray<uint_2>
197//#pragma define_template NOMAdapter_TArray<int_2>
198#pragma define_template NOMAdapter_TArray<int_4>
199#pragma define_template NOMAdapter_TArray<r_4>
200#pragma define_template NOMAdapter_TArray<r_8>
201#pragma define_template NOMAdapter_TArray< complex<r_4> >
202#pragma define_template NOMAdapter_TArray< complex<r_8> >
203//#pragma define_template NTupInt_TArray<uint_2>
204//#pragma define_template NTupInt_TArray<int_2>
205#pragma define_template NTupInt_TArray<int_4>
206#pragma define_template NTupInt_TArray<r_4>
207#pragma define_template NTupInt_TArray<r_8>
208#pragma define_template NTupInt_TArray< complex<r_4> >
209#pragma define_template NTupInt_TArray< complex<r_8> >
210#endif
211
212#if defined(ANSI_TEMPLATES)
213//template class NOMAdapter_TArray<uint_2>;
214//template class NOMAdapter_TArray<int_2>;
215template class NOMAdapter_TArray<int_4>;
216template class NOMAdapter_TArray<r_4>;
217template class NOMAdapter_TArray<r_8>;
218template class NOMAdapter_TArray< complex<r_4> >;
219template class NOMAdapter_TArray< complex<r_8> >;
220// template class NTupInt_TArray<uint_2>;
221// template class NTupInt_TArray<int_2>;
222template class NTupInt_TArray<int_4>;
223template class NTupInt_TArray<r_4>;
224template class NTupInt_TArray<r_8>;
225template class NTupInt_TArray< complex<r_4> >;
226template class NTupInt_TArray< complex<r_8> >;
227#endif
Note: See TracBrowser for help on using the repository browser.