 |
OpendTect
6.6
|
Go to the documentation of this file.
41 virtual bool isOK()
const {
return true; }
44 virtual bool writable()
const {
return false; }
55 virtual T*
arr() {
return 0; }
56 virtual const T*
arr()
const {
return 0; }
79 inline T value(
od_int64 idx )
const;
80 inline void setValue(
od_int64 idx, T v );
82 inline const T* arr()
const;
83 inline bool writable()
const;
84 inline bool canSetAll()
const;
85 inline void setAll(T);
104 { return typeid(RT)==typeid(AT) ? (RT*) ptr_ : (RT*) 0;}
112 template <
class RT,
class AT>
122 bool isOK()
const {
return ptr_; }
134 bool selfSufficient()
const {
return mine_; }
149 #define mChunkSize mMaxContiguousMemSize
157 template <
class RT,
class AT>
167 bool isOK()
const {
return cursize_>=0; }
176 const RT* arr()
const;
205 , nriterations_( nriterations )
213 , nriterations_( nriterations )
220 const T* fromarr = from_.arr();
221 T* toarr = toptr_ ? toptr_ : to_->arr();
222 if ( toarr && fromarr )
224 (
size_t) (nrleft*from_.bytesPerItem()) );
228 for (
od_int64 idx=start; idx<=stop; idx++, toarr++ )
229 *toarr = from_.value( idx );
234 for (
od_int64 idx=start; idx<=stop; idx++, fromarr++ )
235 to_->setValue(idx, *fromarr );
239 for (
od_int64 idx=start; idx<=stop; idx++ )
240 to_->setValue(idx,from_.value(idx));
254 template <
class T>
inline
262 template <
class T>
inline
270 template <
class RT,
class AT>
inline
279 template <
class T>
inline
281 : src_( src ), off_( off ), writable_(true)
283 cursizes<T>.setParam(
this, 0 );
287 template <
class T>
inline
289 : src_( const_cast<
ValueSeries<T>& >(src) ), off_( off ), writable_(false)
291 cursizes<T>.setParam(
this, 0 );
295 template <
class T>
inline
298 cursizes<T>.removeParam(
this );
302 template <
class T>
inline
307 template <
class T>
inline
309 {
return src_.value(idx+off_); }
311 template <
class T>
inline
315 src_.setValue(idx+off_,v);
317 {
pErrMsg(
"Attempting to write to write-protected array"); }
321 template <
class T>
inline
326 const od_int64 cursize = cursizes<T>.getParam(
this );
327 const od_int64 lastidx = off_ + cursize - 1;
333 const od_int64 nrsamps = lastidx - off_ + 1;
337 if ( !arrvals || nrsamps<=0 )
340 const T* stopptr = arrvals + nrsamps;
341 while ( arrvals != stopptr )
347 for (
od_int64 idx=off_; idx<lastidx; idx++ )
348 src_.setValue( idx, v );
351 {
pErrMsg(
"Attempting to write to write-protected array"); }
356 template <
class T>
inline
358 {
return writable_ && src_.canSetAll(); }
361 template <
class T>
inline
363 { T* p = src_.arr();
return p ? p+off_ : 0; }
366 template <
class T>
inline
368 { T* p = src_.arr();
return p ? p+off_ : 0; }
371 template <
class T>
inline
376 template <
class T>
inline
381 template <
class T>
inline
383 {
return writable_; }
386 template <
class T>
inline
389 cursizes<T>.setParam(
this, sz );
395 template <
class RT,
class AT>
397 : ptr_(ptr), mine_(memmine), cursize_( cursz )
401 template <
class RT,
class AT>
403 : ptr_( 0 ), mine_(true), cursize_( -1 )
409 template <
class RT,
class AT>
413 if ( mine_ && cursize_>0 )
415 ptr =
new AT[cursize_];
416 OD::memCopy( ptr, ptr_,
sizeof(AT)*cursize_ );
423 template <
class RT,
class AT>
427 if ( idx<0 || (cursize_>=0 && idx>=cursize_ ) )
434 return (
RT) ptr_[idx];
438 template <
class RT,
class AT>
442 if ( idx<0 || (cursize_>=0 && idx>=cursize_ ) )
453 template <
class RT,
class AT>
460 template <
class RT,
class AT>
inline
463 if ( cursize_!=-1 && cursize_==sz && ptr_ )
return true;
464 if ( !mine_ )
return false;
475 cursize_ = ptr_ ? sz : -1;
476 if ( ptr_ && copysize>0 )
477 OD::memCopy( ptr_, oldptr, (
size_t) (copysize*
sizeof(AT)) );
484 template <
class RT,
class AT>
inline
494 template <
class RT,
class AT>
inline
499 , chunksize_( mavs.chunksize_ )
504 for (
int idx=0; idx<
ptrs_.
size(); idx++ )
511 curchunksize -= diff;
513 OD::memCopy(
ptrs_[idx], mavs.
ptrs_[idx], curchunksize*
sizeof(AT) );
519 template <
class RT,
class AT>
inline
526 template <
class RT,
class AT>
inline
530 if ( idx<0 || idx>=cursize_ )
536 const od_int64 arridx = idx/chunksize_;
537 if ( !ptrs_.validIdx(arridx) )
540 idx -= arridx*chunksize_;
541 return ptrs_[
mCast(
int,arridx)][idx];
545 template <
class RT,
class AT>
inline
549 if ( idx<0 || idx>=cursize_ )
555 const od_int64 arridx = idx/chunksize_;
556 if ( arridx>=ptrs_.size() )
559 idx -= arridx*chunksize_;
560 ptrs_[
mCast(
int,arridx)][idx] = v;
564 template <
class RT,
class AT>
inline
573 for (
int idx=ptrs_.size()-1; idx>=0; idx-- )
577 if ( nextstart>cursize_ )
580 curchunksize -= diff;
584 memsetter.
setSize( curchunksize );
590 template <
class RT,
class AT>
inline
593 return cursize_>0 && cursize_<=chunksize_ &&
typeid(
RT)==
typeid(AT)
594 ? (
RT*) ptrs_[0] : (
RT*) 0;
598 template <
class RT,
class AT>
inline
603 template <
class RT,
class AT>
inline
612 while ( lefttoalloc )
614 const od_uint64 allocsize = lefttoalloc>=chunksize_
628 if ( lefttoalloc > allocsize )
629 lefttoalloc -= allocsize;
Interface to a series of values.
Definition: odmemory.h:16
#define od_uint64
Definition: plftypes.h:36
bool writable() const
Definition: valseries.h:382
void setValue(int64_t idx, RT v)
Definition: valseries.h:546
void memValueSet(T *, T, int64_t, TaskRunner *taskrun=0)
Definition: odmemory.h:479
bool isOK() const
Definition: valseries.h:167
bool selfSufficient() const
Definition: valseries.h:179
T to(const F &fr)
Definition: convert.h:34
~ArrayValueSeries()
Definition: valseries.h:118
bool setSize(int64_t)
Definition: valseries.h:387
RT value(int64_t idx) const
Definition: valseries.h:424
static HiddenParam< OffsetValueSeries< T >, int64_t > cursizes(0)
Workaround manager when you cannot add class members to a class due to binary compability issues.
Definition: hiddenparam.h:54
bool execute()
Definition: paralleltask.h:70
char bytesPerItem() const
Definition: valseries.h:183
void setNullAllowed(bool yn=true)
Definition: objectset.h:371
void setAll(RT)
Definition: valseries.h:454
bool doWork(int64_t start, int64_t stop, int)
Definition: valseries.h:217
Valueseries that allocates its data in smaller chunks. By doing this, it performs better in environme...
Definition: valseries.h:159
virtual T value(int64_t) const =0
int64_t cursize_
Definition: valseries.h:187
bool mine_
Definition: valseries.h:143
void setAll(T)
Definition: valseries.h:322
virtual bool canSetAll() const
Definition: valseries.h:47
Gets ValueSeries.
Definition: valseries.h:198
#define mImplArr
Definition: valseries.h:103
#define od_int64
Definition: plftypes.h:35
void setTarget(T *ptr)
Definition: odmemory.h:52
bool setSize(int64_t)
Definition: valseries.h:604
virtual bool setSize(int64_t)
Definition: valseries.h:53
virtual char bytesPerItem() const
Definition: valseries.h:58
void setValue(const T &val)
Definition: odmemory.h:51
int64_t size() const
Definition: valseries.h:182
T * arr()
Definition: valseries.h:362
int64_t cursize_
Definition: valseries.h:144
virtual bool reSizeable() const
Definition: valseries.h:52
void setValue(int64_t idx, RT v)
Definition: valseries.h:439
ObjectSet< AT > ptrs_
Definition: valseries.h:186
AT * ptr_
Definition: valseries.h:142
size_type size() const
Definition: objectset.h:55
char bytesPerItem() const
Definition: valseries.h:138
void deepEraseArr(ObjectSet< T > &os)
empty the ObjectSet deleting all array objects pointed to.
Definition: objectset.h:164
void setSize(int64_t sz)
Definition: odmemory.h:54
ValueSeries< T > & src_
Definition: valseries.h:95
bool setSize(int64_t)
Definition: valseries.h:461
#define mChunkSize
Definition: valseries.h:149
void setOffset(int64_t no)
Definition: valseries.h:377
ValueSeries< T > * to_
Definition: valseries.h:249
bool reSizeable() const
Definition: valseries.h:180
ValueSeries of offsets.
Definition: valseries.h:70
ArrayValueSeries(AT *ptr, bool memmine, int64_t sz=-1)
Definition: valseries.h:396
T value(int64_t idx) const
Definition: valseries.h:308
~MultiArrayValueSeries()
Definition: valseries.h:520
ValueSeries< T > * clone() const
Definition: valseries.h:303
~OffsetValueSeries()
Definition: valseries.h:296
bool isOK() const
Definition: valseries.h:122
bool canSetAll() const
Definition: valseries.h:357
#define mClass(module)
Definition: commondefs.h:181
virtual bool writable() const
Definition: valseries.h:44
virtual ValueSeries< T > * clone() const =0
const RT * arr() const
Definition: valseries.h:131
#define mTryAlloc(var, stmt)
Catches bad_alloc and sets ptr to null as normal.
Definition: commondefs.h:246
bool writable() const
Definition: valseries.h:125
const int64_t chunksize_
Definition: valseries.h:188
ValueSeriesGetAll(const ValueSeries< T > &from, ValueSeries< T > &to, int64_t nriterations)
Definition: valseries.h:200
virtual bool selfSufficient() const
Definition: valseries.h:50
ArrayValueSeries(int64_t sz)
Definition: valseries.h:402
virtual const T * arr() const
Definition: valseries.h:56
const ValueSeries< T > & source() const
Definition: valseries.h:90
#define pErrMsg(msg)
Usual access point for programmer error messages.
Definition: errmsg.h:37
T * toptr_
Definition: valseries.h:250
void setValue(int64_t idx, T v)
Definition: valseries.h:312
OffsetValueSeries(ValueSeries< T > &src, int64_t off)
Definition: valseries.h:280
void setAll(RT)
Definition: valseries.h:565
void sysMemCopy(void *, const void *, int64_t)
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
#define mCast(tp, v)
Definition: commondefs.h:137
bool reSizeable() const
Definition: valseries.h:135
ValueSeries< RT > * clone() const
Definition: valseries.h:271
int64_t off_
Definition: valseries.h:96
const ValueSeries< T > & from_
Definition: valseries.h:248
RT value(int64_t idx) const
Definition: valseries.h:527
#define mMIN(x, y)
Definition: commondefs.h:62
void getValues(ValueSeries< T > &, int64_t nrvals) const
Definition: valseries.h:255
MultiArrayValueSeries(int64_t)
Definition: valseries.h:485
bool canSetAll() const
Definition: valseries.h:173
virtual void setValue(int64_t, T)
Definition: valseries.h:45
virtual void setAll(T)
Definition: valseries.h:48
T operator[](int64_t idx) const
Definition: valseries.h:60
ValueSeriesGetAll(const ValueSeries< T > &from, T *to, int64_t nriterations)
Definition: valseries.h:208
int64_t nrIterations() const
Definition: valseries.h:216
void getValues(T *, int64_t nrvals) const
Definition: valseries.h:263
int64_t getOffset() const
Definition: valseries.h:372
void forceCrash(bool withdump)
virtual ~ValueSeries()
Definition: valseries.h:35
bool writable_
Definition: valseries.h:97
virtual bool isOK() const
Definition: valseries.h:41
int64_t size() const
Definition: valseries.h:137
Series of values from a pointer to some kind of array. If a more advanced conversion between the retu...
Definition: valseries.h:114
bool writable() const
Definition: valseries.h:170
Sets large amounts of values to a constant using multiple threads.
Definition: odmemory.h:42
bool canSetAll() const
Definition: valseries.h:128
const RT * arr() const
Definition: valseries.h:599
virtual T * arr()
Definition: valseries.h:55
int64_t nriterations_
Definition: valseries.h:247
ValueSeries< RT > * clone() const
Definition: valseries.h:410
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021