Changeset 277 in Sophya for trunk/SophyaLib/BaseTools/objfio.h


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.