// Adaptateurs pour TMatrix TVector du package Sophya // R. Ansari 1/99 // LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA #include "pitvmaad.h" #include /* --Methode-- */ template POTVectorAdapter::POTVectorAdapter(TVector* v, bool ad) : P1DArrayAdapter(v->NElts()) { aDel = ad; mVec = v; } /* --Methode-- */ template POTVectorAdapter::~POTVectorAdapter() { if (aDel) delete mVec; } /* --Methode-- */ template double POTVectorAdapter::Value(int i) { return((*mVec)(i)); } /* --Methode-- */ DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ double POTVectorAdapter< complex >::Value(int i) { double re,im; re = (*mVec)(i).real(); im = (*mVec)(i).imag(); return(sqrt(re*re+im*im)); } /* --Methode-- */ DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ double POTVectorAdapter< complex >::Value(int i) { double re,im; re = (*mVec)(i).real(); im = (*mVec)(i).imag(); return(sqrt(re*re+im*im)); } /* --Methode-- */ template POTMatrixAdapter::POTMatrixAdapter(TMatrix* mtx, bool ad) : P2DArrayAdapter(mtx->NCols(), mtx->NRows()) { aDel = ad; mMtx = mtx; } /* --Methode-- */ template POTMatrixAdapter::~POTMatrixAdapter() { if (aDel) delete mMtx; } /* --Methode-- */ template double POTMatrixAdapter::Value(int ix, int iy) { return((double)(*mMtx)(iy, ix)); } /* --Methode-- */ DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ double POTMatrixAdapter< complex >::Value(int ix, int iy) { double re,im; re = (*mMtx)(iy, ix).real(); im = (*mMtx)(iy, ix).imag(); return(sqrt(re*re+im*im)); } /* --Methode-- */ DECL_TEMP_SPEC /* equivalent a template <> , pour SGI-CC en particulier */ double POTMatrixAdapter< complex >::Value(int ix, int iy) { double re,im; re = (*mMtx)(iy, ix).real(); im = (*mMtx)(iy, ix).imag(); return(sqrt(re*re+im*im)); } #ifdef __CXX_PRAGMA_TEMPLATES__ #pragma define_template POTVectorAdapter< int_4 > #pragma define_template POTVectorAdapter< int_8 > #pragma define_template POTVectorAdapter< float > #pragma define_template POTVectorAdapter< double > #pragma define_template POTVectorAdapter< complex > #pragma define_template POTVectorAdapter< complex > #pragma define_template POTMatrixAdapter< int_4 > #pragma define_template POTMatrixAdapter< int_8 > #pragma define_template POTMatrixAdapter< float > #pragma define_template POTMatrixAdapter< double > #pragma define_template POTMatrixAdapter< complex > #pragma define_template POTMatrixAdapter< complex > #endif #if defined(ANSI_TEMPLATES) template class POTVectorAdapter< int_4 >; template class POTVectorAdapter< int_8 >; template class POTVectorAdapter< float >; template class POTVectorAdapter< double >; template class POTVectorAdapter< complex >; template class POTVectorAdapter< complex >; template class POTMatrixAdapter< int_4 >; template class POTMatrixAdapter< int_8 >; template class POTMatrixAdapter< float >; template class POTMatrixAdapter< double >; template class POTMatrixAdapter< complex >; template class POTMatrixAdapter< complex >; #endif