Changeset 804 in Sophya for trunk/SophyaLib/TArray/basarr.cc
- Timestamp:
- Apr 3, 2000, 7:36:01 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/basarr.cc
r787 r804 14 14 "Stride(int )", "ElemCheckBound()", "operator()" }; 15 15 uint_4 BaseArray::max_nprt_ = 50; 16 short BaseArray::default_memory_mapping = CMemoryMapping; 16 17 17 18 // Methodes statiques globales … … 22 23 23 24 24 uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, uint_4 * siz, uint_4 step, uint_8 offset)25 uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset) 25 26 { 26 27 uint_8 rs = step; … … 28 29 return(rs+offset); 29 30 } 31 32 short BaseArray::SetDefaultMemoryMapping(short mm) 33 { 34 default_memory_mapping = ( (mm == CMemoryMapping) ? CMemoryMapping : FortranMemoryMapping) ; 35 return default_memory_mapping; 36 } 37 38 39 short 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 47 void 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 60 void 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 30 73 31 74 // ------------------------------------------------------- … … 44 87 moystep_ = 0; 45 88 offset_ = 0; 46 // Default for matrices : Lines = Y , Columns = X 89 // Default for matrices : Lines = Y , Columns = X, Default Vectore= ColumnVector 47 90 macoli_ = 0; 48 marowi_ = 1;91 veceli_ = marowi_ = 1; 49 92 } 50 93 … … 60 103 for(int k=0; k<ndim_; k++) 61 104 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); 63 107 return(true); 64 108 } … … 196 240 // Default for matrices : Lines = Y , Columns = X 197 241 macoli_ = 0; 198 marowi_ = 1;242 marowi_ = veceli_ = 1; 199 243 // Update OK 200 244 ndim_ = ndim; … … 238 282 // Default for matrices : Lines = Y , Columns = X 239 283 macoli_ = 0; 240 marowi_ = 1;284 marowi_ = veceli_ = 1; 241 285 // Update OK 242 286 ndim_ = ndim; … … 278 322 macoli_ = a.macoli_; 279 323 marowi_ = a.marowi_; 324 veceli_ = a.veceli_; 280 325 // Update OK 281 326 ndim_ = a.ndim_; … … 284 329 285 330 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") ); 331 void 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") ); 289 335 int k; 290 336 for(k=0; k<ndim; k++) 291 337 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") ); 293 339 uint_8 offset = offset_; 294 340 for(k=0; k<ndim_; k++) { … … 296 342 step[k] *= step_[k]; 297 343 } 298 string exm = "BaseArray:: SubArray() ";344 string exm = "BaseArray::UpdateSubArraySizes() "; 299 345 if (!ra.UpdateSizes(ndim, siz, step, offset, exm)) 300 346 throw( ParmError(exm) ); 301 // (ra.mNDBlock).Share(mNDBlock);302 347 return; 303 348 }
Note:
See TracChangeset
for help on using the changeset viewer.