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

Last change on this file since 2992 was 2975, checked in by ansari, 19 years ago

Ajout flag int lev ds les adaptateurs NObjMgrAdapter::Print(ostream& os, int lev=0) et NamedObjMgr::Print() + modif commande print - Reza 20 Juin 2006

File size: 6.7 KB
Line 
1#include "sopnamsp.h"
2#include "machdefs.h"
3#include <stdlib.h>
4#include <typeinfo>
5#include <iostream>
6#include <string>
7#include <complex>
8
9#include "datatype.h"
10
11#include "nomtarradapter.h"
12#include "tvector.h"
13#include "pitvmaad.h"
14#include "piyfxdrw.h"
15
16#include "fioarr.h"
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
68/* --Methode-- */
69template <class T>
70void NOMAdapter_TArray<T>::SavePPF(POutPersist& pos, string const & nom)
71{
72FIO_TArray<T> fio(mArr);
73fio.Write(pos, nom);
74}
75
76/* --Methode-- */
77template <class T>
78void NOMAdapter_TArray<T>::Print(ostream& os, int lev)
79{
80if (lev < 3) mArr->Show(os, false);
81else mArr->Show(os, true);
82if (lev > 0) mArr->Print(os, 10*lev);
83}
84
85/* --Methode-- */
86template <class T>
87PIDrawer * NOMAdapter_TArray<T>::GetDrawer(string & dopt)
88{
89if (mArr->NbDimensions() == 1) {
90 // On peut en faire un vecteur ...
91 TVector<T>* v = new TVector<T>(*mArr, true); // on partage les donnees
92 dopt = "thinline," + dopt;
93 return( new PIYfXDrawer( new POTVectorAdapter<T>(v, true), NULL, true) );
94}
95 else return(NULL);
96}
97
98/* --Methode-- */
99template <class T>
100P2DArrayAdapter* NOMAdapter_TArray<T>::Get2DArray(string &)
101{
102if (mArr->NbDimensions() <= 2) {
103 // On peut en faire un tableau 2-D ...
104 TMatrix<T>* m = new TMatrix<T>(*mArr, true); // on partage les donnees
105 return ( new POTMatrixAdapter<T>(m, true) );
106}
107else return(NULL);
108}
109
110/* --Methode-- */
111template <class T>
112NTupleInterface* NOMAdapter_TArray<T>::GetNTupleInterface(bool& adel)
113{
114adel = true;
115return( new NTupInt_TArray<T>(mArr) );
116}
117
118
119
120
121// -------------------------------------------------------------
122
123/* --Methode-- */
124template <class T>
125NTupInt_TArray<T>::NTupInt_TArray(TArray<T>* a)
126{
127mArr = a;
128}
129
130/* --Methode-- */
131template <class T>
132NTupInt_TArray<T>::~NTupInt_TArray()
133{
134}
135
136/* --Methode-- */
137template <class T>
138sa_size_t NTupInt_TArray<T>::NbLines() const
139{
140return( mArr->Size() );
141}
142
143/* --Methode-- */
144template <class T>
145sa_size_t NTupInt_TArray<T>::NbColumns() const
146{
147return(11);
148}
149
150/* --Methode-- */
151template <class T>
152r_8* NTupInt_TArray<T>::GetLineD(sa_size_t n) const
153{
154if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
155 mRet[0] = n;
156 for(int i=1; i<11; i++) mRet[i] = 0.;
157}
158else {
159 sa_size_t ix, iy, iz, it, iu;
160 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
161 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
162 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
163 mRet[6] = (*mArr)(ix,iy,iz,it,iu);
164 mRet[7] = mRet[2]; mRet[8] = 0.;
165 mRet[9] = mRet[2]; mRet[10] = 0.;
166 }
167return(mRet);
168}
169
170/* --Methode-- */
171template <class T>
172string NTupInt_TArray<T>::VarList_C(const char* nx) const
173{
174string nomx;
175if (nx) nomx = nx;
176else nomx = "_xh_";
177string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n";
178vardec += "n = " + nomx + "[0]; x = " + nomx + "[1]; y = " + nomx + "[2]; \n";
179vardec += "z = " + nomx + "[3]; t = " + nomx + "[4]; u = " + nomx + "[5]; \n";
180vardec += "val = " + nomx + "[6]; \n";
181vardec += "real = " + nomx + "[7]; imag = " + nomx + "[8]; \n";
182vardec += "mod = " + nomx + "[9]; phas = " + nomx + "[10]; \n";
183return(vardec);
184}
185
186/* --Methode-- */
187DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
188r_8* NTupInt_TArray< complex<r_4> >::GetLineD(sa_size_t n) const
189{
190if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
191 mRet[0] = n;
192 for(int i=1; i<11; i++) mRet[i] = 0.;
193}
194else {
195 sa_size_t ix, iy, iz, it, iu;
196 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
197 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
198 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
199 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
200 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
201 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
202 mRet[7] = atan2(mRet[8], mRet[7]);
203}
204return(mRet);
205}
206
207DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
208r_8* NTupInt_TArray< complex<r_8> >::GetLineD(sa_size_t n) const
209{
210if ((n < 0) || (n >= (int)(mArr->Size()) ) ) {
211 mRet[0] = n;
212 for(int i=1; i<11; i++) mRet[i] = 0.;
213}
214else {
215 sa_size_t ix, iy, iz, it, iu;
216 mArr->IndexAtPosition(n, ix, iy, iz, it, iu);
217 mRet[0] = n; mRet[1] = ix; mRet[2] = iy;
218 mRet[3] = iz; mRet[4] = it; mRet[5] = iu;
219 mRet[7] = (*mArr)(ix,iy,iz,it,iu).real();
220 mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag();
221 mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]);
222 mRet[7] = atan2(mRet[8], mRet[7]);
223}
224return(mRet);
225}
226
227
228#ifdef __CXX_PRAGMA_TEMPLATES__
229#pragma define_template NOMAdapter_TArray<uint_2>
230#pragma define_template NOMAdapter_TArray<int_2>
231#pragma define_template NOMAdapter_TArray<int_4>
232#pragma define_template NOMAdapter_TArray<int_8>
233#pragma define_template NOMAdapter_TArray<r_4>
234#pragma define_template NOMAdapter_TArray<r_8>
235#pragma define_template NOMAdapter_TArray< complex<r_4> >
236#pragma define_template NOMAdapter_TArray< complex<r_8> >
237#pragma define_template NTupInt_TArray<uint_2>
238#pragma define_template NTupInt_TArray<int_2>
239#pragma define_template NTupInt_TArray<int_4>
240#pragma define_template NTupInt_TArray<int_8>
241#pragma define_template NTupInt_TArray<r_4>
242#pragma define_template NTupInt_TArray<r_8>
243#pragma define_template NTupInt_TArray< complex<r_4> >
244#pragma define_template NTupInt_TArray< complex<r_8> >
245#endif
246
247#if defined(ANSI_TEMPLATES)
248template class NOMAdapter_TArray<uint_2>;
249template class NOMAdapter_TArray<int_2>;
250template class NOMAdapter_TArray<int_4>;
251template class NOMAdapter_TArray<int_8>;
252template class NOMAdapter_TArray<r_4>;
253template class NOMAdapter_TArray<r_8>;
254template class NOMAdapter_TArray< complex<r_4> >;
255template class NOMAdapter_TArray< complex<r_8> >;
256template class NTupInt_TArray<uint_2>;
257template class NTupInt_TArray<int_2>;
258template class NTupInt_TArray<int_4>;
259template class NTupInt_TArray<int_8>;
260template class NTupInt_TArray<r_4>;
261template class NTupInt_TArray<r_8>;
262template class NTupInt_TArray< complex<r_4> >;
263template class NTupInt_TArray< complex<r_8> >;
264#endif
Note: See TracBrowser for help on using the repository browser.