Ignore:
Timestamp:
Apr 3, 2000, 7:32:27 PM (25 years ago)
Author:
ansari
Message:

Mise au point du nouveau schema (Version=2) de PPersist - Mise en place

de tag complet pour toutes les donnees/objets ecrits - Gestion a peu
pres correct des objets references plusieurs fois, ecrit une seule fois.
Mecanisme d'enregistrement pour les DataObject associe et Methodes
(PutObject/GetObjet) facilitant l'ecriture/lecture de DataObject.
Separation du fichier de la classe FIO_NDataBlock<T>.

Reza03/04/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/ndatablock.cc

    r773 r802  
    99#include "pexceptions.h"
    1010#include "ndatablock.h"
    11 #include "objfio.h"
    1211
    1312// define DEBUG_NDATABLOCK
     
    613612}
    614613
    615 ////////////////////////////////////////////////////////////////
    616 // -------------------------------------------------------------------------
    617 //   Les objets delegues pour la gestion de persistance
    618 // -------------------------------------------------------------------------
    619 
    620 /*
    621 template <class T>
    622 void ObjFileIO< NDataBlock<T> >::ReadSelf(PInPersist& is)
    623 template <class T>
    624 void ObjFileIO< NDataBlock<T> >::WriteSelf(POutPersist& os)
    625 */
    626 
    627 // Pour pouvoir ecrire des tableaux de complex, en attendant
    628 // PIn/POutPersist::Get/Put(complex<>)
    629 #include "piocmplx.h"
    630 
    631 template <class T>
    632 FIO_NDataBlock<T>::FIO_NDataBlock()
    633 {
    634 dobj=new NDataBlock<T>;
    635 ownobj=true;
    636 }
    637 
    638 template <class T>
    639 FIO_NDataBlock<T>::FIO_NDataBlock(string const & filename)
    640 {
    641 dobj=new NDataBlock<T>;
    642 ownobj=true;
    643 Read(filename);
    644 }
    645 
    646 template <class T>
    647 FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> & obj)
    648 {
    649 dobj = new NDataBlock<T>(obj);
    650 ownobj=true;
    651 }
    652 
    653 template <class T>
    654 FIO_NDataBlock<T>::FIO_NDataBlock(NDataBlock<T> * obj)
    655 {
    656 dobj = obj;
    657 ownobj=false;
    658 }
    659 
    660 template <class T>
    661 FIO_NDataBlock<T>::~FIO_NDataBlock()
    662 {
    663 if (ownobj && dobj) delete dobj;
    664 }
    665 
    666 template <class T>
    667 AnyDataObj* FIO_NDataBlock<T>::DataObj()
    668 {
    669 return(dobj);
    670 }
    671 
    672 template <class T>
    673 void FIO_NDataBlock<T>::SetDataObj(AnyDataObj & o)
    674 {
    675 NDataBlock<T> * po = dynamic_cast< NDataBlock<T> * >(&o);
    676 if (po == NULL) return;
    677 if (ownobj && dobj) delete dobj;
    678 dobj = po; ownobj = false;
    679 }
    680 
    681 template <class T>
    682 void FIO_NDataBlock<T>::ReadSelf(PInPersist& is)
    683 {
    684 // On lit les 3 premiers uint_8
    685 uint_8 itab[3];
    686 is.Get(itab, 3);
    687 if (dobj == NULL) dobj = new NDataBlock<T>(itab[1]);
    688 else if (itab[1] != dobj->Size()) dobj->ReSize(itab[1]);
    689 // On lit le tableau de nombres
    690 PIOSReadArray(is, dobj->Data(), dobj->Size());
    691 }
    692 
    693 
    694 template <class T>
    695 void FIO_NDataBlock<T>::WriteSelf(POutPersist& os) const
    696 {
    697 if (dobj == NULL)   return;  // Attention - $CHECK$ Reza 26/04/99
    698 //  On ecrit 3 uint_8
    699 //  0 : Numero de version,  1 : Taille,  2  reserve a l
    700 uint_8 itab[3];
    701 itab[0] = 1;
    702 itab[1] = dobj->Size();
    703 itab[2] = 0;
    704 os.Put(itab, 3);
    705 //  On ecrit le tableau de nombres
    706 PIOSWriteArray(os, dobj->Data(), dobj->Size());
    707 }
    708614
    709615///////////////////////////////////////////////////////////////
     
    718624#pragma define_template NDataBlock<r_4>
    719625#pragma define_template NDataBlock<r_8>
    720 #pragma define_template NDataBlock< complex<float> >
    721 #pragma define_template NDataBlock< complex<double> >
    722 // Instances des delegues FileIO (PPersist)
    723 #pragma define_template FIO_NDataBlock<uint_1>
    724 #pragma define_template FIO_NDataBlock<uint_2>
    725 #pragma define_template FIO_NDataBlock<int_2>
    726 #pragma define_template FIO_NDataBlock<int_4>
    727 #pragma define_template FIO_NDataBlock<int_8>
    728 #pragma define_template FIO_NDataBlock<uint_4>
    729 #pragma define_template FIO_NDataBlock<uint_8>
    730 #pragma define_template FIO_NDataBlock<r_8>
    731 #pragma define_template FIO_NDataBlock<r_4>
    732 #pragma define_template FIO_NDataBlock< complex<float> >
    733 #pragma define_template FIO_NDataBlock< complex<double> >
     626#pragma define_template NDataBlock< complex<r_4> >
     627#pragma define_template NDataBlock< complex<r_8> >
    734628#endif
    735629
     
    744638template class NDataBlock<r_4>;
    745639template class NDataBlock<r_8>;
    746 template class NDataBlock< complex<float> >;
    747 template class NDataBlock< complex<double> >;
    748 // Instances des delegues FileIO (PPersist)
    749 template class FIO_NDataBlock<uint_1>;
    750 template class FIO_NDataBlock<uint_2>;
    751 template class FIO_NDataBlock<int_2>;
    752 template class FIO_NDataBlock<int_4>;
    753 template class FIO_NDataBlock<int_8>;
    754 template class FIO_NDataBlock<uint_4>;
    755 template class FIO_NDataBlock<uint_8>;
    756 template class FIO_NDataBlock<r_8>;
    757 template class FIO_NDataBlock<r_4>;
    758 template class FIO_NDataBlock< complex<float> >;
    759 template class FIO_NDataBlock< complex<double> >;
    760 #endif
     640template class NDataBlock< complex<r_4> >;
     641template class NDataBlock< complex<r_8> >;
     642#endif
Note: See TracChangeset for help on using the changeset viewer.