 |
OpendTect
6.6
|
Go to the documentation of this file.
59 { copyFrom(ai);
return *
this; }
61 { copyFrom(ai);
return *
this; }
66 bool isOK()
const {
return base::storageOK(); }
69 {
return base::setStorageInternal(vs); }
80 {
return setSize( ((
int)sz) ); }
83 T*
arr() {
return base::ptr_; }
84 const T*
arr()
const {
return base::ptr_; }
87 const T*
getData_()
const {
return base::ptr_; }
111 { copyFrom(ai);
return *
this; }
113 { copyFrom(ai);
return *
this; }
115 bool isOK()
const {
return base::storageOK(); }
130 const T**
get2DData()
const {
return (
const T**) ptr2d_; }
159 { copyFrom(ai);
return *
this; }
161 { copyFrom(ai);
return *
this; }
163 bool isOK()
const {
return base::storageOK(); }
177 const T***
get3DData()
const {
return (
const T***) ptr3d_; }
206 { copyFrom(ai);
return *
this; }
208 { copyFrom(ai);
return *
this; }
210 bool isOK()
const {
return base::storageOK(); }
214 void set(
int,
int,
int,
int,T);
215 T get(
int,
int,
int,
int)
const;
221 bool setSize(
int,
int,
int,
int);
224 const T****
get4DData()
const {
return (
const T****)arr4d_; }
228 void updateStorage();
233 void updateCachePointers();
261 { copyFrom(ai);
return *
this; }
263 { copyFrom(ai);
return *
this; }
266 bool isOK()
const {
return base::storageOK(); }
269 {
return base::setStorageInternal(vs); }
292 template <
class T>
inline
299 template <
class T>
inline
313 template <
class T>
inline
317 if ( !s->
setSize(getStorageSize()) )
323 return setStorageNoResize( s );
327 template <
class T>
inline
336 if ( !stor_ || !stor_->setSize( getStorageSize() ) )
349 template <
class T>
inline
351 {
return stor_ && stor_->isOK(); }
354 template <
class T>
inline
372 if ( getStorageSize() )
374 pErrMsg(
"Cannot store in array without storage" );
382 template <
class T>
inline
390 template <
class T>
inline
399 template <
class T>
inline
408 template <
class T>
inline
412 if ( !in_.validPos( pos ) )
415 if ( base::ptr_ ) base::ptr_[pos] = v;
416 else base::stor_->setValue(pos,v);
420 template <
class T>
inline
424 if ( !in_.validPos( pos ) )
427 return base::ptr_ ? base::ptr_[pos] : base::stor_->value(pos);
431 template <
class T>
inline
434 if ( in_ != templ.
info() )
435 setInfo( templ.
info() );
437 base::getDataFrom( templ );
441 template <
class T>
inline
444 if ( ni.
getNDim() != 1 )
return false;
445 return setSize( ni.
getSize(0) );
449 template <
class T>
inline
453 base::updateStorageSize();
458 template <
class T>
inline
467 template <
class T>
inline
476 template <
class T>
inline
486 template <
class T>
inline
496 template <
class T>
inline
500 if ( !in_.validPos( p0, p1 ) )
512 const od_int64 offset = in_.getOffset( p0, p1 );
513 base::stor_->setValue( offset, v );
518 template <
class T>
inline
522 if ( !in_.validPos( p0, p1 ) )
530 return ptr2d_[p0][p1];
532 const od_int64 offset = in_.getOffset( p0, p1 );
533 return base::stor_->value( offset );
537 template <
class T>
inline
540 bool res = base::setStorageInternal(vs);
541 updateCachePointers();
546 template <
class T>
inline
549 if ( in_ != templ.
info() )
550 setInfo( templ.
info() );
552 base::getDataFrom( templ );
556 template <
class T>
inline
559 if ( ni.
getNDim() != 2 )
return false;
564 template <
class T>
inline
567 in_.setSize( 0, d0 ); in_.setSize( 1, d1 );
573 template <
class T>
inline
576 base::updateStorageSize();
577 updateCachePointers();
581 template <
class T>
inline
589 const int n1 = in_.getSize( 0 );
594 const int n2 = in_.getSize( 1 );
596 for (
int idx=0; idx<n1; idx++, offset+=n2 )
597 ptr2d_[idx] = base::ptr_ + offset;
601 template <
class T>
inline
610 template <
class T>
inline
619 template <
class T>
inline
629 template <
class T>
inline
639 template <
class T>
inline
643 if ( !in_.validPos( p0, p1, p2 ) )
648 ptr3d_[p0][p1][p2] = v;
652 const od_int64 offset = in_.getOffset( p0, p1, p2 );
653 base::stor_->setValue( offset, v );
658 template <
class T>
inline
662 if ( !in_.validPos( p0, p1, p2 ) )
666 return ptr3d_[p0][p1][p2];
668 const od_int64 offset = in_.getOffset( p0, p1, p2 );
669 return base::stor_->value( offset );
673 template <
class T>
inline
676 if ( in_ != templ.
info() )
677 setInfo( templ.
info() );
679 base::getDataFrom( templ );
683 template <
class T>
inline
686 bool res = base::setStorageInternal(vs);
687 updateCachePointers();
691 template <
class T>
inline
694 if ( ni.
getNDim() != 3 )
return false;
699 template <
class T>
inline
702 in_.setSize( 0, d0 ); in_.setSize( 1, d1 ); in_.setSize( 2, d2 );
708 template <
class T>
inline
711 base::updateStorageSize();
712 updateCachePointers();
716 template <
class T>
inline
719 for (
int idx=0; idx<cachestor_.size(); idx++ )
721 delete [] cachestor_[idx];
729 template <
class T>
inline
737 const int n1 = in_.getSize( 0 );
738 const int n2 = in_.getSize( 1 );
739 const int n3 = in_.getSize( 2 );
741 for (
int idx=0; idx<n1; idx++ )
747 for (
int idy=0; idy<n2; idy++, offset+=n3 )
748 ptr2d[idy] = base::ptr_ + offset;
753 ptr3d_ = &cachestor_[0];
759 template <
class T>
inline
762 : inf_(sz0,sz1,sz2,sz3)
769 template <
class T>
inline
778 template <
class T>
inline
788 template <
class T>
inline
798 template <
class T>
inline
803 if ( !inf_.validPos( p0, p1, p2, p3 ) )
807 arr4d_[p0][p1][p2][p3] = v;
810 const od_uint64 offset = inf_.getOffset( p0, p1, p2, p3 );
811 base::stor_->setValue( offset, v );
816 template <
class T>
inline
821 if ( !inf_.validPos( p0, p1, p2, p3 ) )
825 return arr4d_[p0][p1][p2][p3];
827 const od_uint64 offset = inf_.getOffset( p0, p1, p2, p3 );
828 return base::stor_->value( offset );
832 template <
class T>
inline
835 if ( inf_ != templ.
info() )
836 setInfo( templ.
info() );
838 base::getDataFrom( templ );
842 template <
class T>
inline
845 bool res = base::setStorageInternal(vs);
846 updateCachePointers();
850 template <
class T>
inline
859 template <
class T>
inline
863 inf_.setSize( 0, d0 ); inf_.setSize( 1, d1 );
864 inf_.setSize( 2, d2 ); inf_.setSize( 3, d3 );
870 template <
class T>
inline
873 base::updateStorageSize();
874 updateCachePointers();
878 template <
class T>
inline
881 const int n2 = inf_.getSize( 1 );
882 for (
int idx=0; idx<cachestor_.size(); idx++ )
884 T*** cachestoridx = cachestor_[idx];
885 for (
int idy=0; idy<n2; idy++ )
886 delete [] cachestoridx[idy];
887 delete [] cachestoridx;
895 template <
class T>
inline
903 const int n1 = inf_.getSize( 0 );
904 const int n2 = inf_.getSize( 1 );
905 const int n3 = inf_.getSize( 2 );
906 const int n4 = inf_.getSize( 3 );
908 for (
int idx=0; idx<n1; idx++ )
914 for (
int idy=0; idy<n2; idy++ )
920 for (
int idz=0; idz<n3; idz++, offset+=n4 )
921 ptr2d[idz] = base::ptr_ + offset;
929 arr4d_ = &cachestor_[0];
933 template <
class T>
inline
941 template <
class T>
inline
943 : in_( templ.info().clone() )
950 template <
class T>
inline
952 : in_( templ.info().clone() )
963 template <
class T>
inline
966 if ( info()!=templ.
info() )
972 base::getDataFrom( templ );
976 template <
class T>
inline
980 if ( !in_->validPos( pos ) )
983 const od_int64 offset = in_->getOffset(pos);
984 if ( base::ptr_ ) base::ptr_[offset] = v ;
985 else base::stor_->setValue( offset, v);
989 template <
class T>
inline
993 if ( !in_->validPos( pos ) )
996 const od_int64 offset = in_->getOffset(pos);
997 return base::ptr_ ? base::ptr_[offset] : base::stor_->value( offset );
1001 template <
class T>
inline
1004 if ( ni.
getNDim() != in_->getNDim() )
1007 const int ndim = in_->getNDim();
1009 for (
int idx=0; idx<ndim; idx++ )
1012 return setSize( sizes.arr() );
1016 template <
class T>
inline
1019 const int ndim = in_->getNDim();
1020 for (
int idx=0; idx<ndim; idx++ )
1021 in_->setSize( idx, d[idx] );
1023 base::updateStorageSize();
1028 template <
class T>
inline
1045 template <
class T>
inline
1053 {
delete out;
return 0; }
1055 const bool success = clone( oth, *out );
1057 {
delete out;
return 0; }
1063 template <
class T>
inline
1087 if ( inp1d && out1d )
1088 { *out1d = *inp1d;
return true; }
1094 if ( inp2d && out2d )
1095 { *out2d = *inp2d;
return true; }
1101 if ( inp3d && out3d )
1102 { *out3d = *inp3d;
return true; }
1104 else if ( ndim == 4 )
1108 if ( inp4d && out4d )
1109 { *out4d = *inp4d;
return true; }
1114 if ( inpnd && outnd )
1130 const int* pos = iter.
getPos();
1132 }
while ( iter.
next() );
Interface to a series of values.
Definition: odmemory.h:16
#define od_uint64
Definition: plftypes.h:36
ArrayNDImpl(const ArrayND< T > &)
Definition: arrayndimpl.h:942
T **** arr4d_
Definition: arrayndimpl.h:237
bool canSetInfo() const
Definition: arrayndimpl.h:124
void updateCachePointers()
Definition: arrayndimpl.h:730
4-Dim ArrayND
Definition: arraynd.h:183
ArrayImplBase< T > base
Definition: arrayndimpl.h:102
bool isOK() const
Definition: arrayndimpl.h:266
const T ** get2DData() const
Definition: arrayndimpl.h:130
void set(int, int, int, T)
Definition: arrayndimpl.h:640
bool isOK() const
Definition: arrayndimpl.h:66
Array3DImpl(const Array3DInfo &)
Definition: arrayndimpl.h:611
bool setInfo(const ArrayNDInfo &)
Definition: arrayndimpl.h:851
Contains the information about the size of Array2D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:124
static ArrayND< T > * create(const ArrayNDInfo &nsz)
Definition: arrayndimpl.h:1029
const Array1DInfo & info() const
Definition: arrayndimpl.h:75
ArrayImplBase()
Definition: arrayndimpl.h:293
T get(int, int, int) const
Definition: arrayndimpl.h:659
void setND(const int *, T)
Definition: arrayndimpl.h:977
Contains the information about the size of ArrayND, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:25
#define mGlobal(module)
Definition: commondefs.h:180
T ** ptr2d_
Definition: arrayndimpl.h:141
ArrayNDImpl(const ArrayNDImpl< T > &)
Definition: arrayndimpl.h:951
virtual uint64_t getTotalSz() const
bool isOK() const
Definition: arrayndimpl.h:210
Valueseries that allocates its data in smaller chunks. By doing this, it performs better in environme...
Definition: valseries.h:159
const T * getData_() const
Definition: arrayndimpl.h:134
bool canSetStorage() const
Definition: arrayndimpl.h:116
virtual int64_t getStorageSize() const =0
Implementation of Array1D.
Definition: arrayndimpl.h:52
void * getArrayND(const ArrayNDInfo &, const OD::DataRepType)
Implementation of ArrayND.
#define od_int64
Definition: plftypes.h:35
void updateStorage()
Definition: arrayndimpl.h:709
const Array2DInfo & info() const
Definition: arrayndimpl.h:123
bool setSize(int, int, int)
Definition: arrayndimpl.h:700
Flat-array implementation of Array4D.
Definition: arrayndimpl.h:198
ArrayNDImpl(const ArrayNDInfo &)
Definition: arrayndimpl.h:934
Array3DImpl(const Array3DImpl< T > &)
Definition: arrayndimpl.h:630
const T * getData_() const
Definition: arrayndimpl.h:229
Array1DImpl(int sz)
Definition: arrayndimpl.h:383
virtual const Array3DInfo & info() const =0
virtual bool setSize(int64_t)
Definition: valseries.h:53
const Array3DInfo & info() const
Definition: arrayndimpl.h:171
~ArrayImplBase()
Definition: arrayndimpl.h:29
T * arr()
Definition: arrayndimpl.h:83
Implementation of Array3D.
Definition: arrayndimpl.h:151
bool isOK() const
Definition: arrayndimpl.h:163
void updateCachePointers()
Definition: arrayndimpl.h:582
#define mDynamicCastGet(typ, out, in)
Definition: commondefs.h:148
T ** get2DData()
Definition: arrayndimpl.h:129
virtual int getSize(int dim) const =0
bool canSetInfo() const
Definition: arrayndimpl.h:172
Array4DImpl(int, int, int, int)
Definition: arrayndimpl.h:760
bool setStorage(ValueSeries< T > *vs)
Definition: arrayndimpl.h:843
const ValueSeries< T > * getStorage() const
Definition: arraynd.h:45
virtual const Array4DInfo & info() const =0
Array3DInfoImpl in_
Definition: arrayndimpl.h:190
bool updateStorageSize()
Definition: arrayndimpl.h:328
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:111
bool setInfo(const ArrayNDInfo &)
Definition: arrayndimpl.h:557
const T * getData_() const
Definition: arrayndimpl.h:284
bool canSetStorage() const
Definition: arrayndimpl.h:164
virtual bool isOK() const
Definition: arraynd.h:367
virtual const Array1DInfo & info() const =0
virtual void setND(const int *, T)=0
const Array4DInfo & info() const
Definition: arrayndimpl.h:218
Array2DImpl(int sz0, int sz1)
Definition: arrayndimpl.h:459
bool setSize(int, int, int, int)
Definition: arrayndimpl.h:860
bool getDataFrom(const ArrayND< T > &templ)
Definition: arrayndimpl.h:355
void set(int pos, T)
Definition: arrayndimpl.h:409
Array3DImpl(int sz0, int sz1, int sz2)
Definition: arrayndimpl.h:602
const ValueSeries< T > * getStorage_() const
Definition: arrayndimpl.h:230
Array3D ( Subclass of ArrayND ) is a three dimensional array.
Definition: arraynd.h:162
static ArrayND< T > * clone(const ArrayND< T > &)
Definition: arrayndimpl.h:1046
virtual const ArrayNDInfo & info() const =0
bool setStorageNoResize(ValueSeries< T > *)
Definition: arrayndimpl.h:300
void updateStorage()
Definition: arrayndimpl.h:574
ValueSeries< T > * stor_
Definition: arrayndimpl.h:40
T get(int, int, int, int) const
Definition: arrayndimpl.h:817
T getND(const int *) const
Definition: arrayndimpl.h:990
const ArrayNDInfo & info() const
Definition: arrayndimpl.h:274
#define mDeclareAndTryAlloc(tp, var, stmt)
Creates variable, try to alloc and catch bad_alloc.
Definition: commondefs.h:253
Definition: arrayndimpl.h:250
bool canSetStorage() const
Definition: arrayndimpl.h:70
ArrayImplBase< T > base
Definition: arrayndimpl.h:52
void updateCachePointers()
Definition: arrayndimpl.h:896
void copyFrom(const Array4D< T > &)
Definition: arrayndimpl.h:833
int64_t getStorageSize() const
Definition: arrayndimpl.h:231
bool setInfo(const ArrayNDInfo &)
Definition: arrayndimpl.h:1002
#define mClass(module)
Definition: commondefs.h:181
bool setStorage(ValueSeries< T > *vs)
Definition: arrayndimpl.h:538
bool setSize(int)
Definition: arrayndimpl.h:450
void deleteAndZeroArrPtr(T *&ptr, bool isowner=true)
Definition: ptrman.h:32
Contains the information about the size of Array1D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:100
const int * getPos() const
Definition: arraynd.h:220
void set(int, int, int, int, T)
Definition: arrayndimpl.h:799
int nrDims() const
Definition: arrayndinfo.h:41
Iterates through all samples in an ArrayND.
Definition: arraynd.h:209
#define mTryAlloc(var, stmt)
Catches bad_alloc and sets ptr to null as normal.
Definition: commondefs.h:246
Contains the information about the size of Array4D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:166
bool canSetStorage() const
Definition: arrayndimpl.h:211
void copyFrom(const Array3D< T > &)
Definition: arrayndimpl.h:674
bool canChangeNrDims() const
Definition: arrayndimpl.h:276
bool isOK() const
Definition: arrayndimpl.h:115
const T * getData_() const
Definition: arrayndimpl.h:87
Array2DImpl(const Array2D< T > &)
Definition: arrayndimpl.h:477
#define pErrMsg(msg)
Usual access point for programmer error messages.
Definition: errmsg.h:37
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
Contains the information about the size of Array3D, and in what order the data is stored (if accessab...
Definition: arrayndinfo.h:147
bool setSize(const int *)
Definition: arrayndimpl.h:1017
void eraseCache()
Definition: arrayndimpl.h:717
TypeSet< T ** > cachestor_
Definition: arrayndimpl.h:188
Implementation of Array3DInfo.
Definition: arrayndinfo.h:239
T *** get3DData()
Definition: arrayndimpl.h:176
const T *** get3DData() const
Definition: arrayndimpl.h:177
virtual const Array2DInfo & info() const =0
Definition: arrayndimpl.h:24
T *** ptr3d_
Definition: arrayndimpl.h:189
void eraseCache()
Definition: arrayndimpl.h:879
bool setSize(int64_t sz)
Definition: arrayndimpl.h:79
Array1DImpl(const Array1DImpl< T > &)
Definition: arrayndimpl.h:400
virtual T getND(const int *) const =0
bool canSetStorage() const
Definition: arrayndimpl.h:267
bool canSetInfo() const
Definition: arrayndimpl.h:275
Array2DInfoImpl in_
Definition: arrayndimpl.h:140
bool storageOK() const
Definition: arrayndimpl.h:350
Array1DImpl(const Array1D< T > &)
Definition: arrayndimpl.h:391
virtual bool setInfo(const ArrayNDInfo &)
Definition: arraynd.h:67
int64_t getStorageSize() const
Definition: arrayndimpl.h:136
Array2DImpl(const Array2DInfo &)
Definition: arrayndimpl.h:468
bool canSetInfo() const
Definition: arrayndimpl.h:219
Implementation of Array2D.
Definition: arrayndimpl.h:102
Implementation of Array2DInfo.
Definition: arrayndinfo.h:212
bool setInfo(const ArrayNDInfo &)
Definition: arrayndimpl.h:692
TypeSet< T *** > cachestor_
Definition: arrayndimpl.h:236
const ValueSeries< T > * getStorage_() const
Definition: arrayndimpl.h:285
DataRepType
Definition: commontypes.h:49
int64_t getStorageSize() const
Definition: arrayndimpl.h:286
const T * arr() const
Definition: arrayndimpl.h:84
Array3DImpl(const Array3D< T > &)
Definition: arrayndimpl.h:620
virtual ArrayNDInfo * clone() const =0
void set(int, int, T)
Definition: arrayndimpl.h:497
An ArrayND is an array with a given number of dimensions and a size.
Definition: arraynd.h:33
void copyFrom(const Array2D< T > &)
Definition: arrayndimpl.h:547
~Array4DImpl()
Definition: arrayndimpl.h:204
Implementation of Array1DInfo.
Definition: arrayndinfo.h:186
const T **** get4DData() const
Definition: arrayndimpl.h:224
ArrayImplBase< T > base
Definition: arrayndimpl.h:151
bool setInfo(const ArrayNDInfo &)
Definition: arrayndimpl.h:442
virtual int getNDim() const =0
bool canSetInfo() const
Definition: arrayndimpl.h:76
bool setSize(int, int)
Definition: arrayndimpl.h:565
virtual void getAll(T *ptr) const
Definition: arraynd.h:547
bool setStorage(ValueSeries< T > *vs)
Definition: arrayndimpl.h:684
bool setStorageInternal(ValueSeries< T > *)
Definition: arrayndimpl.h:314
ValueSeries< T > * clone() const
Definition: arrayndimpl.h:63
ArrayImplBase< T > base
Definition: arrayndimpl.h:250
T get(int pos) const
Definition: arrayndimpl.h:421
static uiHor3DInterpol * create(uiParent *)
T **** get4DData()
Definition: arrayndimpl.h:223
Array4DInfoImpl inf_
Definition: arrayndimpl.h:238
ArrayImplBase< T > base
Definition: arrayndimpl.h:198
void copyFrom(const Array1D< T > &)
Definition: arrayndimpl.h:432
void forceCrash(bool withdump)
const ValueSeries< T > * getStorage_() const
Definition: arrayndimpl.h:135
bool setStorage(ValueSeries< T > *vs)
Definition: arrayndimpl.h:268
const ValueSeries< T > * getStorage_() const
Definition: arrayndimpl.h:88
const ValueSeries< T > * getStorage_() const
Definition: arrayndimpl.h:182
T get(int, int) const
Definition: arrayndimpl.h:519
const T * getData_() const
Definition: arrayndimpl.h:181
T * ptr_
Definition: arrayndimpl.h:41
int64_t getStorageSize() const
Definition: arrayndimpl.h:89
~ArrayNDImpl()
Definition: arrayndimpl.h:959
void copyFrom(const ArrayND< T > &)
Definition: arrayndimpl.h:964
bool setStorage(ValueSeries< T > *vs)
Definition: arrayndimpl.h:68
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
const T * getData() const
Definition: arraynd.h:54
~Array2DImpl()
Definition: arrayndimpl.h:108
static bool clone(const ArrayND< T > &, ArrayND< T > &)
Definition: arrayndimpl.h:1064
Implementation of Array4DInfo.
Definition: arrayndinfo.h:263
Array2DImpl(const Array2DImpl< T > &)
Definition: arrayndimpl.h:487
virtual T * arr()
Definition: valseries.h:55
ArrayNDInfo * in_
Definition: arrayndimpl.h:288
Array1DInfoImpl in_
Definition: arrayndimpl.h:91
int64_t getStorageSize() const
Definition: arrayndimpl.h:183
void updateStorage()
Definition: arrayndimpl.h:871
~Array3DImpl()
Definition: arrayndimpl.h:157
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021