Changeset 804 in Sophya for trunk/SophyaLib/TArray/basarr.cc


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

Amelioation / debugging de la classe TArray<T> - TVector et TMatrix

heritent maintenant de TArray<T> - Classe RCMatrix rendu prive au fichier
sopemtx.cc - linfit.cc integre a sopemtx.cc

Reza 03/04/2000

File:
1 edited

Legend:

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

    r787 r804  
    1414                                 "Stride(int )", "ElemCheckBound()", "operator()" };
    1515uint_4 BaseArray::max_nprt_ = 50;
     16short  BaseArray::default_memory_mapping = CMemoryMapping;
    1617
    1718// Methodes statiques globales
     
    2223
    2324
    24 uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, uint_4 * siz, uint_4 step, uint_8 offset)
     25uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset)
    2526{
    2627  uint_8 rs = step;
     
    2829  return(rs+offset);
    2930}
     31
     32short BaseArray::SetDefaultMemoryMapping(short mm)
     33{
     34  default_memory_mapping = ( (mm == CMemoryMapping) ? CMemoryMapping : FortranMemoryMapping) ;
     35  return default_memory_mapping;
     36}
     37
     38
     39short BaseArray::SelectMemoryMapping(short mm)
     40// si mm == CMemoryMapping, elements d'une ligne suivant X (consecutif)
     41// sinon (mm == FortranMemoryMapping)  elements d'une colonne suivant X
     42{
     43  if ( (mm == CMemoryMapping) || (mm == FortranMemoryMapping) )  return (mm) ;
     44  else return (default_memory_mapping);
     45}
     46
     47void BaseArray::UpdateMemoryMapping(short mm, uint_4 & nx, uint_4 & ny)
     48{
     49  if ( (mm != CMemoryMapping) && (mm != FortranMemoryMapping) ) mm = default_memory_mapping;
     50  if (mm == CMemoryMapping) {
     51    marowi_ = veceli_ = 1;  macoli_ = 0;
     52    uint_4 nr = nx;
     53    nx = ny;   ny = nr;
     54  }
     55  else {
     56    marowi_ = veceli_ = 0;  macoli_ = 1;
     57  } 
     58}
     59
     60void BaseArray::UpdateMemoryMapping(BaseArray const & a, short mm)
     61{
     62  if (mm == SameMemoryMapping)
     63    mm = ((a.marowi_ == 1) ? CMemoryMapping : FortranMemoryMapping);
     64  if ( (mm != CMemoryMapping) && (mm != FortranMemoryMapping) ) mm = default_memory_mapping;
     65  if (mm == CMemoryMapping) {
     66    marowi_ = veceli_ = 1;  macoli_ = 0;
     67  }
     68  else {
     69    marowi_ = veceli_ = 0;  macoli_ = 1;
     70  } 
     71}
     72
    3073
    3174// -------------------------------------------------------
     
    4487  moystep_ = 0;
    4588  offset_ = 0;
    46   // Default for matrices : Lines = Y , Columns = X
     89  // Default for matrices : Lines = Y , Columns = X, Default Vectore= ColumnVector
    4790  macoli_ = 0;
    48   marowi_ = 1;
     91  veceli_ = marowi_ = 1;
    4992}
    5093
     
    60103  for(int k=0; k<ndim_; k++)
    61104    if (size_[k] != a.size_[k])  return(false);
    62   if ( (macoli_ != a.macoli_) || (marowi_ != a.marowi_) )  return(false);
     105  if ( (macoli_ != a.macoli_) || (marowi_ != a.marowi_) ||
     106       (veceli_ != a.veceli_) )  return(false);
    63107  return(true);
    64108}
     
    196240  // Default for matrices : Lines = Y , Columns = X
    197241  macoli_ = 0;
    198   marowi_ = 1;
     242  marowi_ = veceli_ = 1;
    199243  // Update OK
    200244  ndim_ = ndim;
     
    238282  // Default for matrices : Lines = Y , Columns = X
    239283  macoli_ = 0;
    240   marowi_ = 1;
     284  marowi_ = veceli_ = 1;
    241285  // Update OK
    242286  ndim_ = ndim;
     
    278322  macoli_ = a.macoli_;
    279323  marowi_ = a.marowi_;
     324  veceli_ = a.veceli_;
    280325  // Update OK
    281326  ndim_ = a.ndim_;
     
    284329
    285330
    286 void BaseArray::SubArray(BaseArray & ra, uint_4 ndim, uint_4 * siz, uint_4 * pos, uint_4 * step)
    287 {
    288   if ( (ndim > ndim_) || (ndim < 1) ) throw(SzMismatchError("BaseArray::SubArray( ... ) NDim Error") );
     331void BaseArray::UpdateSubArraySizes(BaseArray & ra, uint_4 ndim, uint_4 * siz, uint_4 * pos, uint_4 * step) const
     332{
     333  if ( (ndim > ndim_) || (ndim < 1) )
     334    throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) NDim Error") );
    289335  int k;
    290336  for(k=0; k<ndim; k++)
    291337    if ( (siz[k]*step[k]+pos[k]) > size_[k] ) 
    292       throw(SzMismatchError("BaseArray::SubArray( ... ) Size/Pos Error") );
     338      throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) Size/Pos Error") );
    293339  uint_8 offset = offset_;
    294340  for(k=0; k<ndim_; k++) {
     
    296342    step[k] *= step_[k];
    297343  }
    298   string exm = "BaseArray::SubArray() ";
     344  string exm = "BaseArray::UpdateSubArraySizes() ";
    299345  if (!ra.UpdateSizes(ndim, siz, step, offset,  exm))
    300346     throw( ParmError(exm) );
    301   //  (ra.mNDBlock).Share(mNDBlock);
    302347  return;
    303348}
Note: See TracChangeset for help on using the changeset viewer.