// G. Le Meur 04/2000 #include "fiolocalmap.h" #include "pexceptions.h" #include "fiondblock.h" //******************************************************************* // class FIO_LocalMap // Les objets delegues pour la gestion de persistance //******************************************************************* //++ template FIO_LocalMap::FIO_LocalMap() // //-- { dobj= new LocalMap; ownobj= true; } //++ template FIO_LocalMap::FIO_LocalMap(string const& filename) // //-- { dobj= new LocalMap; dobj->DataBlock().SetTemp(true); ownobj= true; Read(filename); } //++ template FIO_LocalMap::FIO_LocalMap(const LocalMap& obj) // //-- { dobj= new LocalMap(obj, true); dobj->DataBlock().SetTemp(true); ownobj= true; } template FIO_LocalMap::FIO_LocalMap(LocalMap* obj) { dobj= obj; ownobj= false; } //++ template FIO_LocalMap::~FIO_LocalMap() // //-- { if (ownobj && dobj) delete dobj; } //++ template AnyDataObj* FIO_LocalMap::DataObj() // //-- { return(dobj); } //++ template void FIO_LocalMap::SetDataObj(AnyDataObj & o) // //-- { LocalMap * po = dynamic_cast< LocalMap * >(&o); if (po == NULL) return; if (ownobj && dobj) delete dobj; dobj = po; ownobj = false; } //++ template void FIO_LocalMap::ReadSelf(PInPersist& is) // //-- { if(dobj == NULL) { dobj= new LocalMap; dobj->DataBlock().SetTemp(true); ownobj= true; } // Pour savoir s'il y avait un DVList Info associe char strg[256]; is.GetLine(strg, 255); bool hadinfo= false; if(strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0) hadinfo= true; if(hadinfo) { // Lecture eventuelle du DVList Info is >> dobj->Info(); } int_4 nSzX; is.GetI4(nSzX); // dobj->setSize_x(nSzX); int_4 nSzY; is.GetI4(nSzY); // dobj->setSize_y(nSzY); int_4 nPix; is.GetI4(nPix); // dobj->setNbPixels(nPix); dobj->ReSize(nSzX, nSzY); string ss("local mapping is done"); string sso; is.GetStr(sso); if(sso == ss) { cout<<" ReadSelf:: local mapping"<SetOrigin(theta, phi, x0, y0, angle); double angleX, angleY; is.GetR8(angleX); is.GetR8(angleY); dobj->SetSize(angleX, angleY); } // On lit le DataBlock; FIO_NDataBlock fio_nd(&dobj->DataBlock()); fio_nd.Read(is); } //++ template void FIO_LocalMap::WriteSelf(POutPersist& os) const // //-- { if(dobj == NULL) { cout << " FIO_LocalMap::WriteSelf:: dobj= null " << endl; return; } char strg[256]; int_4 nSzX= dobj->Size_x(); int_4 nSzY= dobj->Size_y(); int_4 nPix= dobj->NbPixels(); if(dobj->ptrInfo()) { sprintf(strg,"LocalMap: NPixX=%6d NPixY=%9d HasInfo",nSzX,nSzY); os.PutLine(strg); os << dobj->Info(); } else { sprintf(strg,"LocalMap: NPixX=%6d NPixY=%9d ",nSzX,nSzY); os.PutLine(strg); } os.PutI4(nSzX); os.PutI4(nSzY); os.PutI4(nPix); if(dobj->LocalMap_isDone()) { string ss("local mapping is done"); os.PutStr(ss); int_4 x0, y0; double theta, phi, angle; dobj->Origin(theta, phi, x0, y0, angle); os.PutI4(x0); os.PutI4(y0); os.PutR8(theta); os.PutR8(phi); os.PutR8(angle); double angleX, angleY; dobj->Aperture(angleX, angleY); os.PutR8(angleX); os.PutR8(angleY); } else { string ss("no local mapping"); os.PutStr(ss); } // On ecrit le dataBlock FIO_NDataBlock fio_nd(&dobj->DataBlock()); fio_nd.Write(os); } #ifdef __CXX_PRAGMA_TEMPLATES__ #pragma define_template FIO_LocalMap #pragma define_template FIO_LocalMap #pragma define_template FIO_LocalMap< complex > #pragma define_template FIO_LocalMap< complex > #endif #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES) template class FIO_LocalMap; template class FIO_LocalMap; template class FIO_LocalMap< complex >; template class FIO_LocalMap< complex >; #endif