Changeset 1156 in Sophya for trunk/SophyaLib/TArray/fioarr.cc


Ignore:
Timestamp:
Aug 29, 2000, 6:10:32 PM (25 years ago)
Author:
ansari
Message:

Introduction du type sa_size_t (taille des tableaux), operateur - (TArray::operator - et NegateElt()) - Reza 29/8/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/fioarr.cc

    r926 r1156  
    9393  uint_4 itab[5];
    9494  is.Get(itab,5);
     95
     96  // Checking version number
     97  if (itab[0] < 2)
     98    FileFormatExc("FIO_TArray<T>::ReadSelf() - Unsupported (old V<2) version");
     99
    95100  if (dobj == NULL) {
    96101    if (itab[1] == 12)   dobj = new TMatrix<T>;
     
    99104  }
    100105// On lit les tailles, etc ...
    101   is.Get(dobj->ndim_);
    102   is.Get(dobj->size_, BASEARRAY_MAXNDIMS);
    103   is.Get(dobj->totsize_);
    104   is.Get(dobj->step_, BASEARRAY_MAXNDIMS);
    105   is.Get(dobj->minstep_);
    106   is.Get(dobj->moystep_);
    107   is.Get(dobj->offset_);
    108   is.Get(dobj->marowi_);
    109   is.Get(dobj->macoli_);
    110   is.Get(dobj->veceli_);
     106// On ecrit les tailles, etc ...
     107  int_4 tmpi4s[5];
     108  is.Get(tmpi4s, 5);
     109  dobj->ndim_ = tmpi4s[0];
     110  dobj->marowi_ = tmpi4s[1];
     111  dobj->macoli_ = tmpi4s[2];
     112  dobj->veceli_ = tmpi4s[3];
     113// tmpi4s[4] Reserved for future use
     114
     115// Tous les sa_size_t sont ecrit/lu en int_8 afin de maintenir la compatibilite 
     116// entre version du programme utilisant int_4 OU int_8 pour sa_size_t
     117  int_8 tmpi8s[BASEARRAY_MAXNDIMS];
     118
     119  is.Get(tmpi8s, BASEARRAY_MAXNDIMS);
     120  for(int kk=0; kk<BASEARRAY_MAXNDIMS; kk++)
     121    dobj->size_[kk] = tmpi8s[kk];
     122  is.Get(tmpi8s, BASEARRAY_MAXNDIMS);
     123  for(int kk=0; kk<BASEARRAY_MAXNDIMS; kk++)
     124    dobj->step_[kk] = tmpi8s[kk];
     125
     126  is.Get(tmpi8s, 5);
     127  dobj->totsize_ = tmpi8s[0];
     128  dobj->offset_ = tmpi8s[1];
     129  dobj->minstep_ = tmpi8s[2];
     130  dobj->moystep_ = tmpi8s[3];
     131// tmpi8s[4] Reserved for future use
     132
    111133// On lit le datablock
    112134  is >> dobj->DataBlock();
     
    132154
    133155  uint_4 itab[5];
    134   itab[0] = 1;  // Numero de version a 1
     156  itab[0] = 2;  // Numero de version a 2 depuis Aout 2000  - Reza
    135157  itab[1] = typa;  // Real object type
    136158  itab[2] = (dobj->mInfo != NULL) ? 1 : 0;
    137159  itab[3] = itab[4] = 0;
    138160  os.Put(itab,5);
     161
    139162// On ecrit les tailles, etc ...
    140   os.Put(dobj->ndim_);
    141   os.Put(dobj->size_, BASEARRAY_MAXNDIMS);
    142   os.Put(dobj->totsize_);
    143   os.Put(dobj->step_, BASEARRAY_MAXNDIMS);
    144   os.Put(dobj->minstep_);
    145   os.Put(dobj->moystep_);
    146   os.Put(dobj->offset_);
    147   os.Put(dobj->marowi_);
    148   os.Put(dobj->macoli_);
    149   os.Put(dobj->veceli_);
     163  int_4 tmpi4s[5];
     164  //  os.Put(dobj->ndim_);
     165  //  os.Put(dobj->marowi_);
     166  //  os.Put(dobj->macoli_);
     167  //  os.Put(dobj->veceli_);
     168  tmpi4s[0] = dobj->ndim_;
     169  tmpi4s[1] = dobj->marowi_;
     170  tmpi4s[2] = dobj->macoli_;
     171  tmpi4s[3] = dobj->veceli_;
     172  tmpi4s[4] = 0;   // Reserved for future use
     173  os.Put(tmpi4s, 5);
     174
     175// Tous les sa_size_t sont ecrit en int_8 afin de pouvoir etre ecrit/relu
     176// entre version du programme utilisant int_4 OU int_8 pour sa_size_t
     177  int_8 tmpi8s[BASEARRAY_MAXNDIMS];
     178
     179  //  os.Put(dobj->size_, BASEARRAY_MAXNDIMS);
     180  for(int kk=0; kk<BASEARRAY_MAXNDIMS; kk++)
     181    tmpi8s[kk] = dobj->size_[kk];
     182  os.Put(tmpi8s, BASEARRAY_MAXNDIMS);
     183  //  os.Put(dobj->step_, BASEARRAY_MAXNDIMS);
     184  for(int kk=0; kk<BASEARRAY_MAXNDIMS; kk++)
     185    tmpi8s[kk] = dobj->step_[kk];
     186  os.Put(tmpi8s, BASEARRAY_MAXNDIMS);
     187
     188  //  os.Put(dobj->totsize_);
     189  //  os.Put(dobj->offset_);
     190  //  os.Put(dobj->minstep_);
     191  //  os.Put(dobj->moystep_);
     192  tmpi8s[0] = dobj->totsize_;
     193  tmpi8s[1] = dobj->offset_;
     194  tmpi8s[2] = dobj->minstep_;
     195  tmpi8s[3] = dobj->moystep_;
     196  tmpi8s[4] = 0;  // Reserved for future use
     197  os.Put(tmpi8s, 5);
     198 
    150199// On ecrit le datablock
    151200  os << dobj->DataBlock();
Note: See TracChangeset for help on using the changeset viewer.