Changeset 1156 in Sophya for trunk/SophyaLib/TArray/basarr.h


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/basarr.h

    r1099 r1156  
    4040
    4141  // threshold for parallel routine call
    42   static void    SetOpenMPSizeThreshold(uint_8 thr=200000);
     42  static void    SetOpenMPSizeThreshold(sa_size_t thr=200000);
    4343  //! Get Size threshold for parallel routine call
    44   static inline uint_8 GetOpenMPSizeThreshold() { return openmp_size_threshold; }
    45 
    46   static void    SetMaxPrint(uint_4 nprt=50, uint_4 lev=0);   
     44  static inline sa_size_t GetOpenMPSizeThreshold() { return openmp_size_threshold; }
     45
     46  static void    SetMaxPrint(int_4 nprt=50, int_4 lev=0);   
    4747  //! Get maximum number of printed elements
    48   static inline uint_4 GetMaxPrint() { return max_nprt_; }
    49   //! Maximum number of printed elements arint level
    50   static inline uint_4 GetPrintLevel() { return prt_lev_; }
     48  static inline int_4 GetMaxPrint() { return max_nprt_; }
     49  //! Get print level
     50  static inline int_4 GetPrintLevel() { return prt_lev_; }
    5151
    5252  static short   SetDefaultMemoryMapping(short mm=CMemoryMapping);
     
    7070  // Array dimensions
    7171  //! Return number of dimensions
    72   inline uint_4 NbDimensions() const { return( ndim_ ); }
     72  inline int_4 NbDimensions() const { return( ndim_ ); }
    7373
    7474  //! Return total size of the array
    75   inline uint_8 Size() const { return(totsize_); }
     75  inline sa_size_t Size() const { return(totsize_); }
    7676  //! Return size along the first dimension
    77   inline uint_4 SizeX() const { return(size_[0]); }
     77  inline sa_size_t SizeX() const { return(size_[0]); }
    7878  //! Return size along the second dimension
    79   inline uint_4 SizeY() const { return(size_[1]); }
     79  inline sa_size_t SizeY() const { return(size_[1]); }
    8080  //! Return size along the third dimension
    81   inline uint_4 SizeZ() const { return(size_[2]); }
     81  inline sa_size_t SizeZ() const { return(size_[2]); }
    8282  //! Return size along the \b ka th dimension
    83   inline uint_4 Size(int ka) const { return(size_[CheckDI(ka,1)]); }
    84 
    85   int MaxSizeKA() const ;
     83  inline sa_size_t Size(int_4 ka) const { return(size_[CheckDI(ka,1)]); }
     84
     85  int_4 MaxSizeKA() const ;
    8686
    8787  //! Get memory organization
     
    8989         { return ( (marowi_ == 1) ? CMemoryMapping : FortranMemoryMapping) ; }
    9090  //! line index dimension
    91   inline int    RowsKA() const {return marowi_; }
     91  inline int_4    RowsKA() const {return marowi_; }
    9292  //! column index dimension
    93   inline int    ColsKA() const {return macoli_; }
     93  inline int_4    ColsKA() const {return macoli_; }
    9494  //! Index dimension of the elements of a vector
    95   inline int    VectKA() const {return veceli_; }
     95  inline int_4    VectKA() const {return veceli_; }
    9696  void          SetMemoryMapping(short mm=AutoMemoryMapping);
    9797
     
    111111  inline bool   IsPackedZ() const { return(step_[2] == 1); }
    112112  //! return true if array is packed along the \b ka th dimension
    113   inline bool   IsPacked(int ka) const { return(step_[CheckDI(ka,2)] == 1); }
     113  inline bool   IsPacked(int_4 ka) const { return(step_[CheckDI(ka,2)] == 1); }
    114114
    115115  //! return the minimum step value along all the dimensions
    116   inline uint_4 MinStep() const  { return(minstep_); }
     116  inline sa_size_t MinStep() const  { return(minstep_); }
    117117  //! return the average step value along all the dimensions
    118   inline uint_4 AvgStep() const  { return(moystep_); }
     118  inline sa_size_t AvgStep() const  { return(moystep_); }
    119119  //! return the step along the first dimension
    120   inline uint_4 StepX() const { return(step_[0]); }
     120  inline sa_size_t StepX() const { return(step_[0]); }
    121121  //! return the step along the second dimension
    122   inline uint_4 StepY() const { return(step_[1]); }
     122  inline sa_size_t StepY() const { return(step_[1]); }
    123123  //! return the step along the third dimension
    124   inline uint_4 StepZ() const { return(step_[2]); }
     124  inline sa_size_t StepZ() const { return(step_[2]); }
    125125  //! return the step along the \b ka th dimension
    126   inline uint_4 Step(int ka) const { return(step_[CheckDI(ka,3)]); }
    127 
    128   int MinStepKA() const ;
     126  inline sa_size_t Step(int_4 ka) const { return(step_[CheckDI(ka,3)]); }
     127
     128  int_4 MinStepKA() const ;
    129129
    130130  // Offset of element ip
    131   uint_8 Offset(uint_8 ip=0) const ;
     131  sa_size_t Offset(sa_size_t ip=0) const ;
    132132  // Offset of the i'th vector along axe ka
    133   uint_8  Offset(uint_4 ka, uint_8 i) const ;
    134   inline uint_8  Offset(uint_4 ix, uint_4 iy, uint_4 iz, uint_4 it=0, uint_4 iu=0) const; 
     133  sa_size_t Offset(int_4 ka, sa_size_t i) const ;
     134  inline sa_size_t  Offset(sa_size_t ix, sa_size_t iy, sa_size_t iz, sa_size_t it=0, sa_size_t iu=0) const; 
    135135
    136136  // an abstract element acces methode
    137   virtual MuTyV & ValueAtPosition(uint_8 ip) const = 0;
     137  virtual MuTyV & ValueAtPosition(sa_size_t ip) const = 0;
    138138
    139139  // Pour recuperer pas et numero d'axe pour operations sur deux arrays
    140   void   GetOpeParams(const BaseArray& a, bool smo, int& ax, int& axa, uint_8& step,
    141                       uint_8& stepa, uint_8& gpas, uint_8& naxa);
     140  void   GetOpeParams(const BaseArray& a, bool smo, int_4& ax, int_4& axa, sa_size_t& step,
     141                      sa_size_t& stepa, sa_size_t& gpas, sa_size_t& naxa);
    142142  // Impression, I/O, ...
    143143  void           Show(ostream& os, bool si=false) const;
     
    150150
    151151protected:
    152   inline int CheckDI(int ka, int msg) const ;
    153   inline void CheckBound(uint_4 ix, uint_4 iy, uint_4 iz, uint_4 it, uint_4 iu, int msg) const ;
     152  inline int_4 CheckDI(int_4 ka, int msg) const ;
     153  inline void CheckBound(sa_size_t ix, sa_size_t iy, sa_size_t iz, sa_size_t it, sa_size_t iu, int msg) const ;
    154154  // Changing Sizes/NDim ... return true if OK
    155   bool UpdateSizes(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset, string & exmsg);
    156   bool UpdateSizes(uint_4 ndim, const uint_4 * siz, const uint_4 * step, uint_8 offset, string & exmsg);
     155  bool UpdateSizes(sa_size_t ndim, const sa_size_t * siz, sa_size_t step, sa_size_t offset, string & exmsg);
     156  bool UpdateSizes(sa_size_t ndim, const sa_size_t * siz, const sa_size_t * step, sa_size_t offset, string & exmsg);
    157157  bool UpdateSizes(const BaseArray& a, string & exmsg);
    158   static uint_8 ComputeTotalSize(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset) ;
     158  static sa_size_t ComputeTotalSize(sa_size_t ndim, const sa_size_t * siz, sa_size_t step, sa_size_t offset) ;
    159159  //  Organisation memoire
    160160  static short SelectMemoryMapping(short mm);
     
    164164
    165165  // Pour Extraction de sous-tableau
    166   virtual void UpdateSubArraySizes(BaseArray & ra, uint_4 ndim, uint_4 * siz, uint_4 * pos, uint_4 * step) const;
    167 
    168   uint_4 ndim_; //!< number of dimensions of array
    169   uint_4 size_[BASEARRAY_MAXNDIMS]; //!< array of the size in each dimension
    170   uint_8 totsize_; //!< Total number of elements
    171   uint_8 offset_;  //!< global offset -\> position of elem[0] in DataBlock
     166  virtual void UpdateSubArraySizes(BaseArray & ra, sa_size_t ndim, sa_size_t * siz, sa_size_t * pos, sa_size_t * step) const;
     167
     168  int_4 ndim_; //!< number of dimensions of array
     169  sa_size_t size_[BASEARRAY_MAXNDIMS]; //!< array of the size in each dimension
     170  sa_size_t totsize_; //!< Total number of elements
     171  sa_size_t offset_;  //!< global offset -\> position of elem[0] in DataBlock
    172172  //! two consecutive elements distance in a given dimension
    173   uint_4 step_[BASEARRAY_MAXNDIMS];
    174   uint_4 minstep_; //!< minimal step (in any axes)
    175   uint_4 moystep_; //!< mean step, if == 0 --\> non regular steps
     173  sa_size_t step_[BASEARRAY_MAXNDIMS];
     174  sa_size_t minstep_; //!< minimal step (in any axes)
     175  sa_size_t moystep_; //!< mean step, if == 0 --\> non regular steps
    176176  int_2  marowi_; //!< For matrices, Row index in dimensions
    177177  int_2  macoli_; //!< For matrices, Column index in dimensions
     
    181181
    182182  static char * ck_op_msg_[6]; //!< Operation messages for CheckDI() CheckBound()
    183   static uint_4 max_nprt_; //!< maximum number of printed elements
    184   static uint_4 prt_lev_;  //!< Print level
     183  static int_4 max_nprt_; //!< maximum number of printed elements
     184  static int_4 prt_lev_;  //!< Print level
    185185  static short default_memory_mapping; //!< Default memory mapping
    186186  static short default_vector_type;    //!< Default vector type Row/Column
    187   static uint_8 openmp_size_threshold; //!< Size limit for parallel routine calls
     187  static sa_size_t openmp_size_threshold; //!< Size limit for parallel routine calls
    188188};
    189189
     
    192192// --------------------------------------------------
    193193//! to verify the compatibility of the dimension index
    194 inline int BaseArray::CheckDI(int ka, int msg)  const
     194inline int_4 BaseArray::CheckDI(int_4 ka, int msg)  const
    195195{
    196   if ( (ka < 0) || ((uint_4) ka >= ndim_) ) {
     196  if ( (ka < 0) || (ka >= ndim_) ) {
    197197    string txt = "BaseArray::CheckDimensionIndex/Error ";   txt += ck_op_msg_[msg];
    198198    throw(RangeCheckError(txt));
     
    202202
    203203//! to verify the compatibility of the indexes in all dimensions
    204 inline void BaseArray::CheckBound(uint_4 ix, uint_4 iy, uint_4 iz, uint_4 it, uint_4 iu, int msg)  const
     204inline void BaseArray::CheckBound(sa_size_t ix, sa_size_t iy, sa_size_t iz, sa_size_t it, sa_size_t iu, int msg)  const
    205205{
    206   if ( (ix >= size_[0]) || (iy >= size_[1]) || (iz > size_[2]) ||
    207        (it >= size_[3]) || (iu >= size_[4]) ) {
     206  if ( (ix >= size_[0]) || (ix < 0) || (iy >= size_[1]) || (iy < 0) ||
     207       (iz >= size_[2]) || (iz < 0) || (it >= size_[3]) || (it < 0) ||
     208       (iu >= size_[4]) || (iu < 0) )  {
    208209    string txt = "BaseArray::CheckArrayBound/Error ";   txt += ck_op_msg_[msg];
    209210    throw(RangeCheckError(txt));
     
    218219// --------------------------------------------------
    219220//! Offset of element (ix,iy,iz,it,iu)
    220 inline uint_8 BaseArray::Offset(uint_4 ix, uint_4 iy, uint_4 iz, uint_4 it, uint_4 iu) const
     221inline sa_size_t BaseArray::Offset(sa_size_t ix, sa_size_t iy, sa_size_t iz, sa_size_t it, sa_size_t iu) const
    221222{
    222223#ifdef SO_BOUNDCHECKING
Note: See TracChangeset for help on using the changeset viewer.