18 #ifndef vectoraccess_h 49 inline void allowNull(
bool yn=
true);
50 inline size_type
size()
const {
return vec_.size(); }
53 #ifdef __MAC_LLVM_COMPILER_ERROR__ 54 inline T* operator[](size_type);
55 inline const T* operator[](size_type)
const;
57 inline virtual T* operator[](size_type);
58 inline virtual const T* operator[](size_type)
const;
60 inline virtual T* operator[](
const T*)
const;
62 inline virtual bool validIdx(
od_int64)
const;
63 inline virtual bool isPresent(
const T*)
const;
64 inline virtual size_type
indexOf(
const T*)
const;
66 inline const T* first()
const;
68 inline const T* last()
const;
72 inline void push( T* t ) { doAdd( t ); }
73 inline bool addIfNew(T*);
74 inline virtual T* replace(size_type idx,T*);
75 inline virtual void insertAt(T* newptr,size_type);
76 inline virtual void insertAfter(T* newptr,size_type);
81 inline virtual void reverse();
84 inline virtual void erase() { plainErase(); }
85 inline virtual T* pop();
86 virtual inline T* removeSingle(size_type,
bool keep_order=
true);
105 #define mObjectSetApplyToAll( os, op ) \ 106 mODSetApplyToAll( ObjectSet<int>::size_type, os, op ) 108 #define mObjectSetApplyToAllFunc( fn, op, extra ) \ 110 inline void fn( ObjectSet<T>& os ) \ 112 mObjectSetApplyToAll( os, op ); \ 126 template <class T,class S>
129 const int sz = from.
size();
130 for (
int idx=0; idx<sz; idx++ )
131 to.
add( from[idx] ?
new T( *from[idx] ) : 0 );
136 template <
class T,
class S>
139 const int sz = from.
size();
140 for (
int idx=0; idx<sz; idx++ )
141 to.
add( from[idx] ? from[idx]->clone() : 0 );
146 template <
class T,
class S>
149 if ( &to == &from )
return;
157 template <
class T,
class S>
160 if ( &to == &from )
return;
168 template <
class T,
class S>
172 for (
int idx=0; idx<os.
size(); idx++ )
174 if ( *os[idx] == val )
182 template <
class T,
class S>
186 return idx == -1 ? 0 : os[idx];
191 template <
class T,
class S>
195 return idx == -1 ? 0 : os[idx];
209 T* o1 = os[j]; T* o2 = os[j+d];
210 if ( !o2 || o1 == o2 || (o1 && !(*o1 > *o2) ) )
232 j>=0 && *os[j]>*os[j+d]; j-=d )
247 const size_type sz = os1.
size();
248 if ( os2.
size() != sz )
251 for ( size_type idx=0; idx<sz; idx++ )
252 if ( os1[idx] != os2[idx] )
264 const size_type sz = os1.
size();
265 if ( os2.
size() != sz )
268 for ( size_type idx=0; idx<sz; idx++ )
270 const T* o1 = os1[idx];
const T* o2 = os2[idx];
273 if ( !o1 || !o2 || (!(*o1 == *o2)) )
281 template <
class T>
inline 286 template <
class T>
inline 291 template <
class T>
inline 296 template <
class T>
inline 301 template <
class T>
inline 303 {
return idx>=0 && idx<
size(); }
306 template <
class T>
inline 313 return (T*)
vec_[idx];
317 template <
class T>
inline 324 return (
const T*)
vec_[idx];
328 template <
class T>
inline 332 return idx < 0 ? 0 : const_cast<T*>(t);
336 template <
class T>
inline 343 template <
class T>
inline 350 template <
class T>
inline 359 template <
class T>
inline 368 template <
class T>
inline 379 template <
class T>
inline 385 swap( idx, sz-1-idx );
389 template <
class T>
inline 398 T* ptr = (T*)
vec_[idx];
399 vec_[idx] = (
void*)newptr;
404 template <
class T>
inline 411 template <
class T>
inline 422 template <
class T>
inline 434 template <
class T>
inline 440 add( const_cast<T*>( os[idx] ) );
443 template <
class T>
inline 448 template <
class T>
inline 459 template <
class T>
inline 462 T* res = (T*)
vec_[idx];
476 template <
class T>
inline 480 {
return isEmpty() ? 0 : (*this)[0]; }
482 {
return isEmpty() ? 0 : (*this)[0]; }
T * last()
Definition: objectset.h:483
bool nullAllowed() const
Definition: objectset.h:48
bool push_back(const T &t)
Definition: vectoraccess.h:183
virtual void removeRange(size_type from, size_type to)
Definition: objectset.h:477
T to(const F &fr)
Definition: convert.h:33
bool equalContents(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects pointed to are equal.
Definition: objectset.h:261
virtual T * operator[](size_type)
Definition: objectset.h:307
I indexOf(const T &, bool forward, I start=-1) const
Definition: vectoraccess.h:246
#define mCast(tp, v)
Definition: commondefs.h:124
void push(T *t)
Definition: objectset.h:72
#define od_int64
Definition: plftypes.h:36
ObjectSet()
Definition: objectset.h:282
virtual T * replace(size_type idx, T *)
Definition: objectset.h:390
int size_type
Definition: objectset.h:39
virtual bool isPresent(const T *) const
Definition: objectset.h:344
void erase()
Definition: vectoraccess.h:78
void deepCopyClone(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with clones of the objects in the other set.
Definition: objectset.h:158
void insert(I pos, const T &val)
Definition: vectoraccess.h:76
T object_type
Definition: objectset.h:40
bool isEmpty() const
Definition: odset.h:45
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:169
ObjectSet< T > & add(T *t)
Definition: objectset.h:70
void deepAppendClone(ObjectSet< T > &to, const ObjectSet< S > &from)
append clones of one set's objects to another ObjectSet.
Definition: objectset.h:137
virtual void swap(int64_t, int64_t)
Definition: objectset.h:369
virtual T * removeSingle(size_type, bool keep_order=true)
Definition: objectset.h:460
virtual int64_t nrItems() const
Definition: objectset.h:51
virtual ObjectSet< T > & doAdd(T *)
Definition: objectset.h:351
size_type size() const
Definition: objectset.h:50
bool append(TypeSetBase< T, I > &to, const TypeSetBase< S, J > &from)
append allowing a different type to be merged into set
Definition: typeset.h:198
Set of pointers to objects.
Definition: commontypes.h:32
void moveToStart(const T &t)
Definition: vectoraccess.h:130
virtual bool isManaged() const
Definition: objectset.h:46
bool allow0_
Definition: objectset.h:94
void remove(I idx)
Definition: vectoraccess.h:85
virtual T * pop()
Definition: objectset.h:444
void plainErase()
Definition: objectset.h:100
virtual void copy(const ObjectSet< T > &)
Definition: objectset.h:423
virtual ObjectSet< T > & operator-=(T *)
Definition: objectset.h:360
virtual ~ObjectSet()
Definition: objectset.h:44
void deepCopy(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with copies of the objects in the other set.
Definition: objectset.h:147
void removeRange(ODSET &inst, size_type start, size_type stop)
Removes a range from the set.
Definition: odset.h:57
const T * find(const ObjectSet< T > &os, const S &val)
Get const object in set.
Definition: objectset.h:183
bool setCapacity(I sz, bool withmargin)
Definition: vectoraccess.h:155
bool addIfNew(T *)
Definition: objectset.h:449
void moveAfter(const T &t, const T &aft)
Definition: vectoraccess.h:110
bool equalObjects(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects are equal.
Definition: objectset.h:244
ObjectSet< T > & operator=(const ObjectSet< T > &)
Definition: objectset.h:292
virtual void insertAt(T *newptr, size_type)
Definition: objectset.h:405
void sort(ObjectSet< T > &os)
Sort ObjectSet. Must have operator > defined for elements.
Definition: objectset.h:220
void deepAppend(ObjectSet< T > &to, const ObjectSet< S > &from)
append copies of one set's objects to another ObjectSet.
Definition: objectset.h:127
T * first()
Definition: objectset.h:479
void deepEraseArr(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:122
void forceCrash(bool withdump)
virtual bool validIdx(int64_t) const
Definition: objectset.h:302
OpendTect.
Definition: commontypes.h:29
#define mObjectSetApplyToAllFunc(fn, op, extra)
Definition: objectset.h:108
void _ObjectSet_sortWithNull(ObjectSet< T > &os)
Sort ObjectSet when nulls are allowed no need to call.
Definition: objectset.h:200
virtual void erase()
Definition: objectset.h:84
void copy(TypeSetBase< T, I > &to, const TypeSetBase< S, I > &from)
Definition: typeset.h:212
void swap(I i, I j)
Definition: vectoraccess.h:100
VectorAccess< void *, size_type > vec_
Definition: objectset.h:93
void allowNull(bool yn=true)
Definition: objectset.h:297
#define mClass(module)
Definition: commondefs.h:164
virtual size_type indexOf(const T *) const
Definition: objectset.h:337
virtual void reverse()
Definition: objectset.h:380
virtual void insertAfter(T *newptr, size_type)
Definition: objectset.h:412
T pop_back()
Definition: vectoraccess.h:195
bool isPresent(const T &) const
Definition: vectoraccess.h:288
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:118
virtual void append(const ObjectSet< T > &)
Definition: objectset.h:435