#include "machdefs.h" #include #include #include #include #include #include "datatype.h" #include "nomtarradapter.h" #include "tvector.h" #include "pitvmaad.h" #include "piscdrawwdg.h" #include "fioarr.h" #include "fitstarray.h" //---------------------------------------------------------------- // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet TMatrix //---------------------------------------------------------------- /* --Methode-- */ template NOMAdapter_TArray::NOMAdapter_TArray(TArray* o) : NObjMgrAdapter(o) { mArr = o; } /* --Methode-- */ template NOMAdapter_TArray::~NOMAdapter_TArray() { } /* --Methode-- */ template NObjMgrAdapter* NOMAdapter_TArray::Clone(AnyDataObj* o) { TArray* a = dynamic_cast *>(o); if (a) return ( new NOMAdapter_TArray(a) ); return ( new NObjMgrAdapter(o) ); } /* --Methode-- */ template string NOMAdapter_TArray::GetDataObjType() { string type = "TArray< "; // type += DecodeTypeIdName(typeid(T).name()); type += DataTypeInfo::getTypeName(); type += " > "; return(type); } /* --Methode-- */ template AnyDataObj* NOMAdapter_TArray::CloneDataObj(bool share) { return ( new TArray(*mArr, share) ); } /* --Methode-- */ template void NOMAdapter_TArray::ReadFits(string const & flnm) { FitsInFile fis(flnm); fis >> (*mArr); } /* --Methode-- */ template void NOMAdapter_TArray::SaveFits(string const & flnm) { FitsOutFile fos(flnm); fos << (*mArr); } // ---- Specialisation pour complexes ----- void NOMAdapter_TArray< complex >::ReadFits(string const & flnm) { cout << " NOMAdapter_TArray< complex >::ReadFits() - Error " << " Not supported (complex data type)" << endl; } void NOMAdapter_TArray< complex >::SaveFits(string const & flnm) { cout << " NOMAdapter_TArray< complex >::SaveFits() - Error " << " Not supported (complex data type)" << endl; } void NOMAdapter_TArray< complex >::ReadFits(string const & flnm) { cout << " NOMAdapter_TArray< complex >::ReadFits() - Error " << " Not supported (complex data type)" << endl; } void NOMAdapter_TArray< complex >::SaveFits(string const & flnm) { cout << " NOMAdapter_TArray< complex >::SaveFits() - Error " << " Not supported (complex data type)" << endl; } /* --Methode-- */ template void NOMAdapter_TArray::SavePPF(POutPersist& pos, string const & nom) { FIO_TArray fio(mArr); fio.Write(pos, nom); } /* --Methode-- */ template void NOMAdapter_TArray::Print(ostream& os) { os << (*mArr); } /* --Methode-- */ template PIDrawer * NOMAdapter_TArray::GetDrawer(string & dopt) { if (mArr->NbDimensions() == 1) { // On peut en faire un vecteur ... TVector* v = new TVector(*mArr, true); // on partage les donnees dopt = "thinline," + dopt; return( new PIYfXDrawer( new POTVectorAdapter(v, true), NULL, true) ); } else return(NULL); } /* --Methode-- */ template P2DArrayAdapter* NOMAdapter_TArray::Get2DArray(string &) { if (mArr->NbDimensions() <= 2) { // On peut en faire un tableau 2-D ... TMatrix* m = new TMatrix(*mArr, true); // on partage les donnees return ( new POTMatrixAdapter(m, true) ); } else return(NULL); } /* --Methode-- */ template NTupleInterface* NOMAdapter_TArray::GetNTupleInterface(bool& adel) { adel = true; return( new NTupInt_TArray(mArr) ); } // ------------------------------------------------------------- /* --Methode-- */ template NTupInt_TArray::NTupInt_TArray(TArray* a) { mArr = a; } /* --Methode-- */ template NTupInt_TArray::~NTupInt_TArray() { } /* --Methode-- */ template uint_4 NTupInt_TArray::NbLines() const { return( mArr->Size() ); } /* --Methode-- */ template uint_4 NTupInt_TArray::NbColumns() const { return(11); } /* --Methode-- */ template r_8* NTupInt_TArray::GetLineD(int n) const { if ((n < 0) || (n >= (int)(mArr->Size()) ) ) { mRet[0] = n; for(int i=1; i<11; i++) mRet[i] = 0.; } else { sa_size_t ix, iy, iz, it, iu; mArr->IndexAtPosition(n, ix, iy, iz, it, iu); mRet[0] = n; mRet[1] = ix; mRet[2] = iy; mRet[3] = iz; mRet[4] = it; mRet[5] = iu; mRet[6] = (*mArr)(ix,iy,iz,it,iu); mRet[7] = mRet[2]; mRet[8] = 0.; mRet[9] = mRet[2]; mRet[10] = 0.; } return(mRet); } /* --Methode-- */ template string NTupInt_TArray::VarList_C(const char* nx) const { string nomx; if (nx) nomx = nx; else nomx = "_xh_"; string vardec = "double n,x,y,z,t,u,val,real,imag,mod,phas; \n"; vardec += "n = " + nomx + "[0]; x = " + nomx + "[1]; y = " + nomx + "[2]; \n"; vardec += "z = " + nomx + "[3]; t = " + nomx + "[4]; u = " + nomx + "[5]; \n"; vardec += "val = " + nomx + "[6]; \n"; vardec += "real = " + nomx + "[7]; imag = " + nomx + "[8]; \n"; vardec += "mod = " + nomx + "[9]; phas = " + nomx + "[10]; \n"; return(vardec); } /* --Methode-- */ r_8* NTupInt_TArray< complex >::GetLineD(int n) const { if ((n < 0) || (n >= (int)(mArr->Size()) ) ) { mRet[0] = n; for(int i=1; i<11; i++) mRet[i] = 0.; } else { sa_size_t ix, iy, iz, it, iu; mArr->IndexAtPosition(n, ix, iy, iz, it, iu); mRet[0] = n; mRet[1] = ix; mRet[2] = iy; mRet[3] = iz; mRet[4] = it; mRet[5] = iu; mRet[7] = (*mArr)(ix,iy,iz,it,iu).real(); mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag(); mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]); mRet[7] = atan2(mRet[8], mRet[7]); } return(mRet); } r_8* NTupInt_TArray< complex >::GetLineD(int n) const { if ((n < 0) || (n >= (int)(mArr->Size()) ) ) { mRet[0] = n; for(int i=1; i<11; i++) mRet[i] = 0.; } else { sa_size_t ix, iy, iz, it, iu; mArr->IndexAtPosition(n, ix, iy, iz, it, iu); mRet[0] = n; mRet[1] = ix; mRet[2] = iy; mRet[3] = iz; mRet[4] = it; mRet[5] = iu; mRet[7] = (*mArr)(ix,iy,iz,it,iu).real(); mRet[8] = (*mArr)(ix,iy,iz,it,iu).imag(); mRet[3] = mRet[6] = sqrt(mRet[7]*mRet[7]+mRet[8]*mRet[8]); mRet[7] = atan2(mRet[8], mRet[7]); } return(mRet); } #ifdef __CXX_PRAGMA_TEMPLATES__ //#pragma define_template NOMAdapter_TArray //#pragma define_template NOMAdapter_TArray #pragma define_template NOMAdapter_TArray #pragma define_template NOMAdapter_TArray #pragma define_template NOMAdapter_TArray #pragma define_template NOMAdapter_TArray< complex > #pragma define_template NOMAdapter_TArray< complex > //#pragma define_template NTupInt_TArray //#pragma define_template NTupInt_TArray #pragma define_template NTupInt_TArray #pragma define_template NTupInt_TArray #pragma define_template NTupInt_TArray #pragma define_template NTupInt_TArray< complex > #pragma define_template NTupInt_TArray< complex > #endif #if defined(ANSI_TEMPLATES) //template class NOMAdapter_TArray; //template class NOMAdapter_TArray; template class NOMAdapter_TArray; template class NOMAdapter_TArray; template class NOMAdapter_TArray; template class NOMAdapter_TArray< complex >; template class NOMAdapter_TArray< complex >; // template class NTupInt_TArray; // template class NTupInt_TArray; template class NTupInt_TArray; template class NTupInt_TArray; template class NTupInt_TArray; template class NTupInt_TArray< complex >; template class NTupInt_TArray< complex >; #endif