source: Sophya/trunk/SophyaPI/PIext/pitvmaad.cc@ 2930

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

Instanciation explicite Adapterde NamedObjMgr et enregsitrement pour la prise en charge des tableaux (TArray/TMatrix/TVector) de type <int_2> <uint_2> <int_8> - Reza 3/4/2006

File size: 3.6 KB
Line 
1// Adaptateurs pour TMatrix TVector du package Sophya
2// R. Ansari 1/99
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include "sopnamsp.h"
6#include "pitvmaad.h"
7#include <math.h>
8
9/* --Methode-- */
10template <class T>
11POTVectorAdapter<T>::POTVectorAdapter(TVector<T>* v, bool ad)
12 : P1DArrayAdapter(v->NElts())
13{
14aDel = ad;
15mVec = v;
16}
17/* --Methode-- */
18template <class T>
19POTVectorAdapter<T>::~POTVectorAdapter()
20{
21if (aDel) delete mVec;
22}
23
24/* --Methode-- */
25template <class T>
26double POTVectorAdapter<T>::Value(int i)
27{
28return((*mVec)(i));
29}
30
31/* --Methode-- */
32DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
33double POTVectorAdapter< complex<float> >::Value(int i)
34{
35double re,im;
36re = (*mVec)(i).real();
37im = (*mVec)(i).imag();
38return(sqrt(re*re+im*im));
39}
40
41/* --Methode-- */
42DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
43double POTVectorAdapter< complex<double> >::Value(int i)
44{
45double re,im;
46re = (*mVec)(i).real();
47im = (*mVec)(i).imag();
48return(sqrt(re*re+im*im));
49}
50
51/* --Methode-- */
52template <class T>
53POTMatrixAdapter<T>::POTMatrixAdapter(TMatrix<T>* mtx, bool ad)
54 : P2DArrayAdapter(mtx->NCols(), mtx->NRows())
55{
56aDel = ad;
57mMtx = mtx;
58}
59/* --Methode-- */
60template <class T>
61POTMatrixAdapter<T>::~POTMatrixAdapter()
62{
63if (aDel) delete mMtx;
64}
65/* --Methode-- */
66template <class T>
67double POTMatrixAdapter<T>::Value(int ix, int iy)
68{
69return((double)(*mMtx)(iy, ix));
70}
71
72/* --Methode-- */
73DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
74double POTMatrixAdapter< complex<float> >::Value(int ix, int iy)
75{
76double re,im;
77re = (*mMtx)(iy, ix).real();
78im = (*mMtx)(iy, ix).imag();
79return(sqrt(re*re+im*im));
80}
81
82/* --Methode-- */
83DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */
84double POTMatrixAdapter< complex<double> >::Value(int ix, int iy)
85{
86double re,im;
87re = (*mMtx)(iy, ix).real();
88im = (*mMtx)(iy, ix).imag();
89return(sqrt(re*re+im*im));
90}
91
92#ifdef __CXX_PRAGMA_TEMPLATES__
93#pragma define_template POTVectorAdapter< uint_2 >
94#pragma define_template POTVectorAdapter< int_2 >
95#pragma define_template POTVectorAdapter< int_4 >
96#pragma define_template POTVectorAdapter< int_8 >
97#pragma define_template POTVectorAdapter< float >
98#pragma define_template POTVectorAdapter< double >
99#pragma define_template POTVectorAdapter< complex<float> >
100#pragma define_template POTVectorAdapter< complex<double> >
101
102#pragma define_template POTMatrixAdapter< uint_2 >
103#pragma define_template POTMatrixAdapter< int_2 >
104#pragma define_template POTMatrixAdapter< int_4 >
105#pragma define_template POTMatrixAdapter< int_8 >
106#pragma define_template POTMatrixAdapter< float >
107#pragma define_template POTMatrixAdapter< double >
108#pragma define_template POTMatrixAdapter< complex<float> >
109#pragma define_template POTMatrixAdapter< complex<double> >
110#endif
111
112#if defined(ANSI_TEMPLATES)
113template class POTVectorAdapter< uint_2 >;
114template class POTVectorAdapter< int_2 >;
115template class POTVectorAdapter< int_4 >;
116template class POTVectorAdapter< int_8 >;
117template class POTVectorAdapter< float >;
118template class POTVectorAdapter< double >;
119template class POTVectorAdapter< complex<float> >;
120template class POTVectorAdapter< complex<double> >;
121
122template class POTMatrixAdapter< uint_2 >;
123template class POTMatrixAdapter< int_2 >;
124template class POTMatrixAdapter< int_4 >;
125template class POTMatrixAdapter< int_8 >;
126template class POTMatrixAdapter< float >;
127template class POTMatrixAdapter< double >;
128template class POTMatrixAdapter< complex<float> >;
129template class POTMatrixAdapter< complex<double> >;
130#endif
Note: See TracBrowser for help on using the repository browser.