OpendTect  6.3
arrayndinfo.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: K. Tingdahl
7  Date: 9-3-1999
8 ________________________________________________________________________
9 
10 
11 */
12 
13 #include "basicmod.h"
14 #include "gendefs.h"
15 
22 {
23 public:
24 
25  virtual ArrayNDInfo* clone() const = 0;
26  virtual ~ArrayNDInfo() {}
27 
28  virtual int getNDim() const = 0;
29  virtual int getSize(int dim) const = 0;
30  virtual bool setSize(int dim,int sz);
31 
32  virtual bool isOK() const;
33 
34  virtual od_uint64 getTotalSz() const;
35  virtual od_uint64 getOffset(const int*) const;
37  virtual bool validPos(const int*) const;
39  bool validDimPos(int dim,int pos) const;
41  virtual bool getArrayPos(od_uint64, int*) const;
44 protected:
45 
46  od_uint64 calcTotalSz() const;
47 
48 };
49 
50 
51 inline bool operator ==( const ArrayNDInfo& a1, const ArrayNDInfo& a2 )
52 {
53  int nd = a1.getNDim();
54  if ( nd != a2.getNDim() ) return false;
55  for ( int idx=0; idx<nd; idx++ )
56  if ( a1.getSize(idx) != a2.getSize(idx) ) return false;
57  return true;
58 }
59 
60 inline bool operator !=( const ArrayNDInfo& a1, const ArrayNDInfo& a2 )
61 { return !(a1 == a2); }
62 
63 
70 {
71 public:
72 
73  virtual int getNDim() const { return 1; }
74 
75  virtual od_uint64 getOffset( int pos ) const
76  { return pos; }
77  virtual bool validPos( int pos ) const
78  { return ArrayNDInfo::validPos( &pos ); }
79 
80  virtual od_uint64 getOffset( const int* iarr ) const
81  { return getOffset( *iarr ); }
82  virtual bool validPos( const int* iarr ) const
83  { return ArrayNDInfo::validPos( iarr ); }
84 
85 };
86 
87 
94 {
95 public:
96 
97  virtual int getNDim() const { return 2; }
98 
99  virtual od_uint64 getOffset(int,int) const;
101  virtual bool validPos(int,int) const;
102 
103  virtual od_uint64 getOffset( const int* iarr ) const
104  { return ArrayNDInfo::getOffset( iarr ); }
105  virtual bool validPos( const int* iarr ) const
106  { return ArrayNDInfo::validPos( iarr ); }
107 
108 };
109 
110 
117 {
118 public:
119 
120  virtual int getNDim() const { return 3; }
121 
122  virtual od_uint64 getOffset(int, int, int) const;
124  virtual bool validPos(int,int,int) const;
125 
126  virtual od_uint64 getOffset( const int* iarr ) const
127  { return ArrayNDInfo::getOffset( iarr ); }
128  virtual bool validPos( const int* iarr ) const
129  { return ArrayNDInfo::validPos( iarr ); }
130 
131 };
132 
133 
139 {
140 public:
141 
142  virtual Array1DInfo* clone() const
143  { return new Array1DInfoImpl(*this); }
144 
145  Array1DInfoImpl(int nsz=0);
146  Array1DInfoImpl(const Array1DInfo&);
147 
148  virtual int getSize(int dim) const;
149  virtual bool setSize(int dim,int nsz);
150  virtual bool isOK() const { return dimsz_>=0; }
151  virtual od_uint64 getTotalSz() const { return dimsz_; }
152 
153 protected:
154 
155  int dimsz_;
156 
157 };
158 
159 
165 {
166 public:
167 
168  virtual Array2DInfo* clone() const { return new Array2DInfoImpl(*this); }
169 
170  Array2DInfoImpl(int sz0=0, int sz1=0);
171  Array2DInfoImpl(const Array2DInfo&);
172 
173  virtual int getSize(int dim) const;
174  virtual bool setSize(int dim,int nsz);
175  virtual bool isOK() const { return cachedtotalsz_ > 0; }
176 
177  virtual od_uint64 getTotalSz() const { return cachedtotalsz_; }
178 
179 protected:
180 
181  int dimsz_[2];
183 
184 };
185 
186 
192 {
193 public:
194 
195  virtual Array3DInfo* clone() const { return new Array3DInfoImpl(*this); }
196 
197  Array3DInfoImpl(int sz0=0, int sz1=0, int sz2=0);
198  Array3DInfoImpl(const Array3DInfo&);
199 
200  virtual int getSize(int dim) const;
201  virtual bool setSize(int dim,int nsz);
202  virtual bool isOK() const { return cachedtotalsz_ > 0; }
203  virtual od_uint64 getTotalSz() const { return cachedtotalsz_; }
204 
205 protected:
206 
207  int dimsz_[3];
209 
210 };
211 
212 
218 {
219 public:
220 
221  virtual ArrayNDInfo* clone() const;
222  static ArrayNDInfo* create(int ndim);
223 
224  ArrayNDInfoImpl(int ndim);
225  ArrayNDInfoImpl(const ArrayNDInfo&);
227  ~ArrayNDInfoImpl();
228  virtual bool isOK() const { return cachedtotalsz_ > 0; }
229 
230  virtual od_uint64 getTotalSz() const { return cachedtotalsz_; }
231  virtual int getNDim() const;
232  virtual int getSize(int dim) const;
233  virtual bool setSize(int dim,int nsz);
234 
235 protected:
236 
237  int ndim_;
238  int* dimsz_;
239 
241 };
242 
243 
244 inline int Array1DInfoImpl::getSize( int dim ) const
245 {
246  return dim ? 0 : dimsz_;
247 }
248 
249 
250 inline int Array2DInfoImpl::getSize( int dim ) const
251 {
252  return dim>1 || dim<0 ? 0 : dimsz_[dim];
253 }
254 
255 
256 inline int Array3DInfoImpl::getSize( int dim ) const
257 {
258  return dim>2 || dim<0 ? 0 : dimsz_[dim];
259 }
#define mExpClass(module)
Definition: commondefs.h:157
virtual int getNDim() const =0
uint64_t cachedtotalsz_
Definition: arrayndinfo.h:240
uint64_t cachedtotalsz_
Definition: arrayndinfo.h:208
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
virtual int getNDim() const
Definition: arrayndinfo.h:73
virtual bool validPos(const int *) const
Contains the information about the size of Array3D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:116
virtual bool validPos(const int *iarr) const
Definition: arrayndinfo.h:128
Implementation of ArrayNDInfo.
Definition: arrayndinfo.h:217
uint64_t cachedtotalsz_
Definition: arrayndinfo.h:182
Contains the information about the size of ArrayND, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:21
Contains the information about the size of Array1D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:69
virtual int getSize(int dim) const
Definition: arrayndinfo.h:256
virtual int getNDim() const
Definition: arrayndinfo.h:97
RowCol getArrayPos(const EM::PosID &) const
virtual Array1DInfo * clone() const
Definition: arrayndinfo.h:142
virtual uint64_t getTotalSz() const
Definition: arrayndinfo.h:230
virtual int getSize(int dim) const =0
int ndim_
Definition: arrayndinfo.h:237
Implementation of Array3DInfo.
Definition: arrayndinfo.h:191
virtual bool isOK() const
Definition: arrayndinfo.h:175
virtual bool validPos(int pos) const
Definition: arrayndinfo.h:77
virtual bool validPos(const int *iarr) const
Definition: arrayndinfo.h:105
virtual uint64_t getOffset(int pos) const
Definition: arrayndinfo.h:75
Contains the information about the size of Array2D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:93
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:60
virtual bool isOK() const
Definition: arrayndinfo.h:202
virtual uint64_t getOffset(const int *) const
virtual int getSize(int dim) const
Definition: arrayndinfo.h:244
virtual bool isOK() const
Definition: arrayndinfo.h:228
#define od_uint64
Definition: plftypes.h:35
virtual uint64_t getTotalSz() const
Definition: arrayndinfo.h:177
virtual Array3DInfo * clone() const
Definition: arrayndinfo.h:195
virtual uint64_t getTotalSz() const
Definition: arrayndinfo.h:203
int dimsz_
Definition: arrayndinfo.h:155
static uiHor3DInterpol * create(uiParent *)
Implementation of Array1DInfo.
Definition: arrayndinfo.h:138
virtual bool isOK() const
Definition: arrayndinfo.h:150
virtual Array2DInfo * clone() const
Definition: arrayndinfo.h:168
Implementation of Array2DInfo.
Definition: arrayndinfo.h:164
int * dimsz_
Definition: arrayndinfo.h:238
virtual uint64_t getTotalSz() const
Definition: arrayndinfo.h:151
virtual uint64_t getOffset(const int *iarr) const
Definition: arrayndinfo.h:80
virtual int getSize(int dim) const
Definition: arrayndinfo.h:250
virtual uint64_t getOffset(const int *iarr) const
Definition: arrayndinfo.h:103
virtual bool validPos(const int *iarr) const
Definition: arrayndinfo.h:82
virtual ~ArrayNDInfo()
Definition: arrayndinfo.h:26
virtual uint64_t getOffset(const int *iarr) const
Definition: arrayndinfo.h:126
virtual int getNDim() const
Definition: arrayndinfo.h:120

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017