 |
OpendTect
6.6
|
Go to the documentation of this file.
63 inline virtual T*
get(
const T*)
const;
67 inline const T*
last()
const;
70 inline void push( T* t ) { doAdd( t ); }
85 inline virtual void erase() { plainErase(); }
86 inline virtual T*
pop();
91 inline ObjectSet& operator +=( T* t ) {
return doAdd( t ); }
94 inline const T*
operator[](
const T* t )
const {
return get(t);}
101 bool allow0_ =
false;
110 { setNullAllowed(yn); }
130 {
return !(oth == *
this); }
141 #define mObjectSetApplyToAll( os, op ) \
142 mODSetApplyToAll( ObjectSet<int>::size_type, os, op )
144 #define mObjectSetApplyToAllFunc( fn, op, extra ) \
146 inline void fn( ObjectSet<T>& os ) \
148 mObjectSetApplyToAll( os, op ); \
157 for (
auto obj : os )
166 for (
auto obj : os )
172 template <
class T,
class S>
175 const int sz = from.
size();
176 for (
int idx=0; idx<sz; idx++ )
177 to.add( from[idx] ?
new T( *from[idx] ) : 0 );
181 template <
class T,
class S>
184 const int sz = from.
size();
185 for (
int idx=0; idx<sz; idx++ )
186 to.add( from[idx] ? from[idx]->
clone() : 0 );
190 template <
class T,
class S>
201 template <
class T,
class S>
204 if ( &
to == &from )
return;
211 template <
class T,
class S>
217 const T* obj = os[idx];
218 if ( obj && *obj == val )
225 template <
class T,
class S>
229 return idx == -1 ? 0 : os[idx];
233 template <
class T,
class S>
237 return idx == -1 ? 0 : os[idx];
251 T* o1 = os[j]; T* o2 = os[j+d];
252 if ( !o2 || o1 == o2 || (o1 && !(*o1 > *o2) ) )
274 j>=0 && *os[j]>*os[j+d]; j-=d )
288 const IType sz = os1.
size();
289 if ( os2.
size() != sz )
292 for ( IType idx=0; idx<sz; idx++ )
293 if ( os1[idx] != os2[idx] )
304 const IType sz = os1.
size();
305 if ( os2.
size() != sz )
308 for ( IType idx=0; idx<sz; idx++ )
310 const T* o1 = os1[idx];
const T* o2 = os2[idx];
313 if ( !o1 || !o2 || (!(*o1 == *o2)) )
321 template <
class T>
inline
325 template <
class T>
inline
331 template <
class T>
inline
337 template <
class T>
inline
343 template <
class T>
inline
347 template <
class T>
inline
355 template <
class T>
inline
361 if ( sz != oth.
size() )
364 for (
idx_type vidx=sz-1; vidx!=-1; vidx-- )
365 if ( get(vidx) != oth.
get(vidx) )
370 template <
class T>
inline
378 for (
idx_type vidx=size()-1; vidx!=-1; vidx-- )
380 T* obj = (*this)[vidx];
382 removeSingle( vidx );
388 template <
class T>
inline
390 {
return vidx>=0 && vidx<size(); }
392 template <
class T>
inline
396 if ( !validIdx(vidx) )
402 template <
class T>
inline
406 if ( !validIdx(vidx) )
412 template <
class T>
inline
416 return vidx < 0 ? 0 : const_cast<T*>(t);
419 template <
class T>
inline
422 return vec_.indexOf( (T*)ptr,
true );
425 template <
class T>
inline
428 return vec_.isPresent( (T*)ptr );
431 template <
class T>
inline
434 if ( ptr || allow0_ )
435 vec_.push_back( ptr );
439 template <
class T>
inline
442 if ( ptr || allow0_ )
447 template <
class T>
inline
450 if ( !validIdx(idx1) || !validIdx(idx2) )
457 vec_.swapElems( idx1, idx2 );
461 template <
class T>
inline
465 if ( idxs && sz > 1 )
473 template <
class T>
inline
478 for (
idx_type vidx=0; vidx<hsz; vidx++ )
479 swap( vidx, sz-1-vidx );
482 template <
class T>
inline
485 if ( !validIdx(vidx) )
491 T* ptr =
static_cast<T*
>( vec_[vidx] );
496 template <
class T>
inline
499 vec_.insert( vidx, newptr );
502 template <
class T>
inline
507 vec_.moveToStart( newptr );
509 vec_.moveAfter( newptr, vec_[vidx] );
512 template <
class T>
inline
523 template <
class T>
inline
527 vec_.setCapacity( size()+sz,
true );
528 for (
idx_type vidx=0; vidx<sz; vidx++ )
529 add(
const_cast<T*
>( os[vidx] ) );
532 template <
class T>
inline
534 {
return static_cast<T*
>( vec_.pop_back() ); }
536 template <
class T>
inline
539 if ( isPresent(ptr) )
546 template <
class T>
inline
549 T* res =
static_cast<T*
>(vec_[vidx]);
556 vec_[vidx] = vec_[lastidx];
557 vec_.remove( lastidx );
562 template <
class T>
inline
564 { vec_.remove( i1, i2 ); }
566 {
return isEmpty() ? 0 : get( 0 ); }
568 {
return isEmpty() ? 0 : get( 0 ); }
570 {
return isEmpty() ? 0 : get( size()-1 ); }
572 {
return isEmpty() ? 0 : get( size()-1 ); }
585 {
return *objset.
get( i ); }
588 {
return *objset.
get( i ); }
impl_type vec_
Definition: objectset.h:100
const_iterator cbegin() const
Definition: vectoraccess.h:50
virtual bool isManaged() const
Definition: objectset.h:49
idx_type getIdx(iterator it) const
Definition: vectoraccess.h:54
bool operator==(const ObjectSet &) const
Definition: objectset.h:356
iterator begin()
Definition: objectset.h:120
void push(T *t)
Definition: objectset.h:70
ObjectSet(T *, T *)
Definition: objectset.h:332
virtual void removeRange(idx_type from, idx_type to)
Definition: objectset.h:563
T to(const F &fr)
Definition: convert.h:34
ObjectSet< T >::idx_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:212
#define mGlobal(module)
Definition: commondefs.h:180
void sort(ObjectSet< T > &os)
Sort ObjectSet. Must have operator > defined for elements.
Definition: objectset.h:262
Set of pointers to objects.
Definition: commontypes.h:31
void setNullAllowed(bool yn=true)
Definition: objectset.h:371
ObjectSet & add(T *t)
Definition: objectset.h:69
T * operator[](idx_type i)
Definition: objectset.h:92
const T * operator[](idx_type i) const
Definition: objectset.h:93
#define od_int64
Definition: plftypes.h:35
impl_type::iterator iterator
Definition: vectoraccess.h:45
virtual T * removeSingle(idx_type, bool keep_order=true)
Definition: objectset.h:547
idx_type getIdx(const_iterator it) const
Definition: objectset.h:136
bool empty() const
Definition: objectset.h:127
T * first()
Definition: objectset.h:565
virtual void reverse()
Definition: objectset.h:474
void swap(ObjectSet &oth)
Definition: objectset.h:131
value_type & reference
Definition: objectset.h:114
const_iterator cend() const
Definition: objectset.h:125
T & getRef(ObjectSet< T > &objset, int i)
Definition: objectset.h:584
virtual void insertAfter(T *newptr, idx_type)
Definition: objectset.h:503
const T * last() const
Definition: objectset.h:571
virtual bool validIdx(int64_t) const
Definition: objectset.h:389
idx_type getIdx(iterator it) const
Definition: objectset.h:135
iterator end()
Definition: objectset.h:123
const_iterator end() const
Definition: objectset.h:124
void deepAppend(ObjectSet< T > &to, const ObjectSet< S > &from)
append copies of one set's objects to another ObjectSet.
Definition: objectset.h:173
size_type size() const
Definition: objectset.h:55
bool nullAllowed() const
Definition: objectset.h:53
void deepEraseArr(ObjectSet< T > &os)
empty the ObjectSet deleting all array objects pointed to.
Definition: objectset.h:164
void allowNull(bool yn=true)
Definition: objectset.h:109
VectorAccess< T *, size_type > impl_type
Definition: objectset.h:99
bool isEmpty(const NLAModel *mdl)
ObjectSet(T *)
Definition: objectset.h:326
const_iterator cend() const
Definition: vectoraccess.h:53
void deepCopyClone(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with clones of the objects in the other set.
Definition: objectset.h:202
virtual T * pop()
Definition: objectset.h:533
T * value_type
Definition: objectset.h:113
virtual bool isPresent(const T *) const
Definition: objectset.h:426
void deepCopy(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with copies of the objects in the other set.
Definition: objectset.h:191
virtual ObjectSet & doAdd(T *)
Definition: objectset.h:432
const T * operator[](const T *t) const
Definition: objectset.h:94
virtual ~ObjectSet()
Definition: objectset.h:47
void swap(ObjectSet< T > &os1, ObjectSet< T > &os2)
Definition: objectset.h:577
const T * find(const ObjectSet< T > &os, const S &val)
Get const object in set.
Definition: objectset.h:226
virtual void copy(const ObjectSet &)
Definition: objectset.h:513
T * last()
Definition: objectset.h:569
#define mClass(module)
Definition: commondefs.h:181
impl_type::const_iterator const_iterator
Definition: vectoraccess.h:46
void swap(VectorAccess &oth)
Definition: vectoraccess.h:120
size_type idx_type
Definition: objectset.h:39
ObjectSet & operator=(const ObjectSet &)
Definition: objectset.h:348
void useIndexes(const idx_type *)
Definition: objectset.h:462
virtual T * get(const T *) const
check & unconst
Definition: objectset.h:413
const T * first() const
Definition: objectset.h:567
size_type max_size() const
Definition: objectset.h:126
virtual int64_t nrItems() const
Definition: objectset.h:56
iterator end()
Definition: vectoraccess.h:51
iterator begin()
Definition: vectoraccess.h:48
void swap(idx_type, idx_type)
Definition: objectset.h:448
virtual void append(const ObjectSet &)
Definition: objectset.h:524
void copy(OD::ValVec< T, IT > &to, const OD::ValVec< S, IT > &from)
Definition: typeset.h:255
T object_type
Definition: objectset.h:40
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:155
virtual ObjectSet & operator-=(T *)
Definition: objectset.h:440
virtual void erase()
Definition: objectset.h:85
bool addIfNew(T *)
Definition: objectset.h:537
int size_type
Definition: objectset.h:38
ObjectSet()
Definition: objectset.h:322
void plainErase()
Definition: objectset.h:107
void deepAppendClone(ObjectSet< T > &to, const ObjectSet< S > &from)
append clones of one set's objects to another ObjectSet.
Definition: objectset.h:182
virtual idx_type indexOf(const T *) const
Definition: objectset.h:420
size_type difference_type
Definition: objectset.h:118
ObjectSet(T *, T *, T *)
Definition: objectset.h:338
impl_type::const_iterator const_iterator
Definition: objectset.h:117
void _ObjectSet_sortWithNull(ObjectSet< T > &os)
Sort ObjectSet when nulls are allowed no need to call.
Definition: objectset.h:242
const_iterator begin() const
Definition: objectset.h:121
void erase()
Definition: vectoraccess.h:92
bool equalObjects(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects are equal.
Definition: objectset.h:285
bool operator!=(const ObjectSet &oth) const
Definition: objectset.h:129
virtual void insertAt(T *newptr, idx_type)
Definition: objectset.h:497
bool append(OD::ValVec< T, IT > &to, const OD::ValVec< S, J > &from)
append allowing a different type to be merged into set
Definition: typeset.h:239
ObjectSet(const ObjectSet &)
Definition: objectset.h:344
bool allow0_
Definition: objectset.h:101
impl_type::iterator iterator
Definition: objectset.h:116
const_iterator cbegin() const
Definition: objectset.h:122
bool equalContents(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects pointed to are equal.
Definition: objectset.h:301
void forceCrash(bool withdump)
virtual T * get(idx_type)
Definition: objectset.h:393
const value_type & const_reference
Definition: objectset.h:115
virtual void swapItems(int64_t i1, int64_t i2)
Definition: objectset.h:80
virtual ObjectSet * clone() const
Definition: objectset.h:50
virtual T * replace(idx_type, T *)
Definition: objectset.h:483
virtual const T * get(idx_type) const
Definition: objectset.h:403
Base class for all sets used in OpendTect.
Definition: odset.h:33
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021