Changeset 277 in Sophya for trunk/SophyaLib/BaseTools


Ignore:
Timestamp:
Apr 28, 1999, 3:36:07 PM (26 years ago)
Author:
ansari
Message:

Amelioration (?) ObjFileIO<T> Reza 28/04/99

Location:
trunk/SophyaLib/BaseTools
Files:
1 added
4 edited

Legend:

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

    r275 r277  
    608608*/
    609609
     610// Pour pouvoir ecrire des tableaux de complex, en attendant
     611// PIn/POutPersist::Get/Put(complex<>)
     612#include <piocmplx.h>
     613
    610614template <class T>
    611615FIO_NDataBlock<T>::FIO_NDataBlock()
    612616{
    613617dobj=new NDataBlock<T>;
     618ownobj=true;
    614619}
    615620
     
    617622FIO_NDataBlock<T>::FIO_NDataBlock(string const & filename)
    618623{
    619 dobj=new NDataBlock<T>;
     624dobj=new NDataBlock<T>;
     625ownobj=true;
    620626Read(filename);
    621627}
     
    624630FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> & obj)
    625631{
    626 dobj = new NDataBlock<T>(obj);
    627 }
    628 
    629 template <class T>
    630 FIO_NDataBlock<T>::FIO_NDataBlock(const NDataBlock<T> * obj)
     632dobj = new NDataBlock<T>(obj);
     633ownobj=true;
     634}
     635
     636template <class T>
     637FIO_NDataBlock<T>::FIO_NDataBlock(NDataBlock<T> * obj)
    631638{
    632 dobj = new NDataBlock<T>(*obj);
     639dobj = obj;
     640ownobj=false;
    633641}
    634642
     
    636644FIO_NDataBlock<T>::~FIO_NDataBlock()
    637645{
    638 if (dobj) delete dobj;
     646if (ownobj && dobj) delete dobj;
    639647}
    640648
     
    653661is.Get(itab, 3);
    654662if (dobj == NULL) dobj = new NDataBlock<T>(itab[1]);
    655 else dobj->ReSize(itab[1]);
     663else dobj->ReSize(itab[1], false);
    656664// On lit le tableau de nombres
    657665PIOSReadArray(is, dobj->Data(), dobj->Size());
     
    681689#pragma define_template NDataBlock<int_4>
    682690#pragma define_template NDataBlock<int_8>
    683 #pragma define_template NDataBlock<uint_2>
    684691#pragma define_template NDataBlock<uint_4>
    685692#pragma define_template NDataBlock<uint_8>
     
    694701#pragma define_template FIO_NDataBlock<int_4>
    695702#pragma define_template FIO_NDataBlock<int_8>
    696 #pragma define_template FIO_NDataBlock<uint_2>
    697703#pragma define_template FIO_NDataBlock<uint_4>
    698704#pragma define_template FIO_NDataBlock<uint_8>
     
    710716template class NDataBlock<int_4>;
    711717template class NDataBlock<int_8>;
    712 template class NDataBlock<uint_2>;
    713718template class NDataBlock<uint_4>;
    714719template class NDataBlock<uint_8>;
     
    723728template class FIO_NDataBlock<int_4>;
    724729template class FIO_NDataBlock<int_8>;
    725 template class FIO_NDataBlock<uint_2>;
    726730template class FIO_NDataBlock<uint_4>;
    727731template class FIO_NDataBlock<uint_8>;
  • trunk/SophyaLib/BaseTools/ndatablock.h

    r275 r277  
    159159            FIO_NDataBlock(string const & filename);
    160160            FIO_NDataBlock(const NDataBlock<T> & obj);
    161             FIO_NDataBlock(const NDataBlock<T> * obj);
     161            FIO_NDataBlock(NDataBlock<T> * obj);
    162162  virtual   ~FIO_NDataBlock();
    163163
     
    169169  virtual void       WriteSelf(POutPersist&) const; 
    170170  NDataBlock<T> * dobj;
    171 
     171  bool ownobj;
    172172};
    173173
  • trunk/SophyaLib/BaseTools/objfio.h

    r269 r277  
    1313namespace PlanckDPC {
    1414
    15   /*
    16 // Pour gerer les Persist I/O de tableaux numerique templates
    17 template <class T>
    18 void PIOSReadArray(PInPersist & is, T* arr, size_t n);
    19 template <class T>
    20 void PIOSWriteArray(POutPersist & os, T const * arr, size_t n);
    21   */
    22 
    2315
    2416template <class T>
     
    2618
    2719public :
    28             ObjFileIO() { dobj=new T; }
    29             ObjFileIO(string const & filename) { dobj=new T; Read(filename); }
    30             ObjFileIO(const T & obj) { dobj = new T(obj); }
    31             ObjFileIO(const T * obj) { dobj = new T(*obj); }
    32   virtual   ~ObjFileIO() { if (dobj) delete dobj; }
     20            ObjFileIO() { dobj=new T; ownobj=true; }
     21            ObjFileIO(string const & filename)
     22                        { dobj=new T; ownobj=true; Read(filename); }
     23            ObjFileIO(const T & obj) { dobj = new T(obj); ownobj=true; }
     24            ObjFileIO(T * obj) { dobj = obj; ownobj=false; }
     25  virtual   ~ObjFileIO() { if (ownobj && dobj) delete dobj; }
    3326
    3427  virtual   AnyDataObj* DataObj() { return(dobj); }
     
    4033
    4134  T * dobj;
     35  bool ownobj;       // True si dobj obtenu par new
    4236};
    4337
    44 // Fonctions d'ecriture de tableaux numeriques
    45 inline
    46 void PIOSReadArray(PInPersist & is, uint_1 * arr, size_t n)
    47 {
    48 is.GetBytes(arr, n);
    49 }
     38/*
     39template <class T>
     40inline POutPersist& operator << (POutPersist& os, T const & obj)
     41{ ObjFileIO<T> fio((const_cast)&obj);  fio.Write(os);  return(os); }
    5042
    51 inline
    52 void PIOSReadArray(PInPersist & is, uint_2 * arr, size_t n)
    53 {
    54 is.Get(arr, n);
    55 }
     43template <class T>
     44inline PInPersist& operator >> (PInPersist& is, T & obj)
     45{ ObjFileIO<T> fio(&obj);  fio.Read(is);  return(is); } 
     46*/
    5647
    57 inline
    58 void PIOSReadArray(PInPersist & is, int_2 * arr, size_t n)
    59 {
    60 is.Get(arr, n);
    61 }
    62 
    63 inline
    64 void PIOSReadArray(PInPersist & is, uint_4 * arr, size_t n)
    65 {
    66 is.Get(arr, n);
    67 }
    68 
    69 inline
    70 void PIOSReadArray(PInPersist & is, int_4 * arr, size_t n)
    71 {
    72 is.Get(arr, n);
    73 }
    74 
    75 inline
    76 void PIOSReadArray(PInPersist & is, uint_8 * arr, size_t n)
    77 {
    78 is.Get(arr, n);
    79 }
    80 
    81 inline
    82 void PIOSReadArray(PInPersist & is, int_8 * arr, size_t n)
    83 {
    84 is.Get(arr, n);
    85 }
    86 
    87 inline
    88 void PIOSReadArray(PInPersist & is, r_4 * arr, size_t n)
    89 {
    90 is.Get(arr, n);
    91 }
    92 
    93 inline
    94 void PIOSReadArray(PInPersist & is, r_8 * arr, size_t n)
    95 {
    96 is.Get(arr, n);
    97 }
    98 
    99 inline
    100 void PIOSReadArray(PInPersist & is, complex<float> * arr, size_t n)
    101 {
    102 r_4 * pr = (r_4 *)arr;
    103 is.Get(pr, n*2);
    104 }
    105 
    106 inline
    107 void PIOSReadArray(PInPersist & is, complex<double> * arr, size_t n)
    108 {
    109 r_8 * pr = (r_8 *)arr;
    110 is.Get(pr, n*2);
    111 }
    112 
    113 // Fonctions d ecriture de tableaux de nombre
    114 inline
    115 void PIOSWriteArray(POutPersist & os, uint_1 const * arr, size_t n)
    116 {
    117 os.PutBytes(arr, n);
    118 }
    119 
    120 inline
    121 void PIOSWriteArray(POutPersist & os, uint_2 const * arr, size_t n)
    122 {
    123 os.Put(arr, n);
    124 }
    125 
    126 inline
    127 void PIOSWriteArray(POutPersist & os, int_2 const * arr, size_t n)
    128 {
    129 os.Put(arr, n);
    130 }
    131 
    132 inline
    133 void PIOSWriteArray(POutPersist & os, uint_4 const * arr, size_t n)
    134 {
    135 os.Put(arr, n);
    136 }
    137 
    138 inline
    139 void PIOSWriteArray(POutPersist & os, int_4 const * arr, size_t n)
    140 {
    141 os.Put(arr, n);
    142 }
    143 
    144 inline
    145 void PIOSWriteArray(POutPersist & os, uint_8 const * arr, size_t n)
    146 {
    147 os.Put(arr, n);
    148 }
    149 
    150 inline
    151 void PIOSWriteArray(POutPersist & os, int_8 const * arr, size_t n)
    152 {
    153 os.Put(arr, n);
    154 }
    155 
    156 inline
    157 void PIOSWriteArray(POutPersist & os, r_4 const * arr, size_t n)
    158 {
    159 os.Put(arr, n);
    160 }
    161 
    162 inline
    163 void PIOSWriteArray(POutPersist & os, r_8 const * arr, size_t n)
    164 {
    165 os.Put(arr, n);
    166 }
    167 
    168 inline
    169 void PIOSWriteArray(POutPersist & os, complex<float> const * arr, size_t n)
    170 {
    171 r_4 const * pr = (r_4 const *)arr;
    172 os.Put(pr, n*2);
    173 }
    174 
    175 inline
    176 void PIOSWriteArray(POutPersist & os, complex<double> const * arr, size_t n)
    177 {
    178 r_8 const * pr = (r_8 const *)arr;
    179 os.Put(pr, n*2);
    180 }
    18148
    18249} // Fin namespace
  • trunk/SophyaLib/BaseTools/peidainit.cc

    r269 r277  
    55#include "ppersist.h"
    66#include "peidainit.h"
     7#include "ndatablock.h"
     8#include "complex"
     9
    710// ---  Classe d'initialisation de PEIDA++, (PPersistMgr en particulier)
    811int PeidaInitiator::FgInit = 0;
     
    2427
    2528  PIOPersist::Initialize();
     29  PPRegister(FIO_NDataBlock<uint_1>);
     30  PPRegister(FIO_NDataBlock<uint_2>);
     31  PPRegister(FIO_NDataBlock<int_2>);
     32  PPRegister(FIO_NDataBlock<int_4>);
     33  PPRegister(FIO_NDataBlock<int_8>);
     34  PPRegister(FIO_NDataBlock<uint_4>);
     35  PPRegister(FIO_NDataBlock<uint_8>);
     36  PPRegister(FIO_NDataBlock<r_4>);
     37  PPRegister(FIO_NDataBlock<r_4>);
     38  PPRegister(FIO_NDataBlock< complex<float> >);
     39  PPRegister(FIO_NDataBlock< complex<double> >);
     40
    2641//DEL  PPersistMgr::classList = new PPersistMgr::ClassList;
    2742//DEL  PShPersist::objList    = new PShPersist::ObjList;
Note: See TracChangeset for help on using the changeset viewer.