16 #ifndef vectoraccess_h 47 inline void allowNull(
bool yn=
true);
48 inline size_type
size()
const {
return vec_.size(); }
51 inline virtual bool validIdx(
od_int64)
const;
52 inline virtual bool isPresent(
const T*)
const;
53 inline virtual size_type
indexOf(
const T*)
const;
54 inline virtual T*
get(size_type);
55 inline virtual const T*
get(size_type)
const;
56 inline virtual T*
get(
const T*)
const;
58 inline const T* first()
const;
60 inline const T* last()
const;
63 inline void push( T* t ) { doAdd( t ); }
64 inline bool addIfNew(T*);
65 inline virtual T* replace(size_type idx,T*);
66 inline virtual void insertAt(T* newptr,size_type);
67 inline virtual void insertAfter(T* newptr,size_type);
72 inline virtual void reverse();
75 inline virtual void erase() { plainErase(); }
76 inline virtual T* pop();
77 virtual inline T* removeSingle(size_type,
bool keep_order=
true);
83 inline const T*
operator[]( size_type i )
const {
return get(i);}
84 inline const T*
operator[](
const T* t )
const {
return get(t);}
103 {
return *objset.get( i ); }
106 {
return *objset.get( i ); }
109 #define mObjectSetApplyToAll( os, op ) \ 110 mODSetApplyToAll( ObjectSet<int>::size_type, os, op ) 112 #define mObjectSetApplyToAllFunc( fn, op, extra ) \ 114 inline void fn( ObjectSet<T>& os ) \ 116 mObjectSetApplyToAll( os, op ); \ 130 template <class T,class S>
133 const int sz = from.
size();
134 for (
int idx=0; idx<sz; idx++ )
135 to.
add( from[idx] ?
new T( *from[idx] ) : 0 );
140 template <
class T,
class S>
143 const int sz = from.
size();
144 for (
int idx=0; idx<sz; idx++ )
145 to.
add( from[idx] ? from[idx]->clone() : 0 );
150 template <
class T,
class S>
153 if ( &to == &from )
return;
161 template <
class T,
class S>
164 if ( &to == &from )
return;
172 template <
class T,
class S>
176 for (
int idx=0; idx<os.
size(); idx++ )
178 if ( *os[idx] == val )
186 template <
class T,
class S>
190 return idx == -1 ? 0 : os[idx];
195 template <
class T,
class S>
199 return idx == -1 ? 0 : os[idx];
213 T* o1 = os[j]; T* o2 = os[j+d];
214 if ( !o2 || o1 == o2 || (o1 && !(*o1 > *o2) ) )
236 j>=0 && *os[j]>*os[j+d]; j-=d )
251 const size_type sz = os1.
size();
252 if ( os2.
size() != sz )
255 for ( size_type idx=0; idx<sz; idx++ )
256 if ( os1[idx] != os2[idx] )
268 const size_type sz = os1.
size();
269 if ( os2.
size() != sz )
272 for ( size_type idx=0; idx<sz; idx++ )
274 const T* o1 = os1[idx];
const T* o2 = os2[idx];
277 if ( !o1 || !o2 || (!(*o1 == *o2)) )
285 template <
class T>
inline 290 template <
class T>
inline 295 template <
class T>
inline 300 template <
class T>
inline 305 template <
class T>
inline 307 {
return idx>=0 && idx<
size(); }
310 template <
class T>
inline 317 return static_cast<T*
>(
vec_[idx] );
321 template <
class T>
inline 328 return static_cast<const T*
>(
vec_[idx] );
332 template <
class T>
inline 336 return idx < 0 ? 0 : const_cast<T*>(t);
340 template <
class T>
inline 347 template <
class T>
inline 354 template <
class T>
inline 363 template <
class T>
inline 372 template <
class T>
inline 383 template <
class T>
inline 389 swap( idx, sz-1-idx );
393 template <
class T>
inline 402 T* ptr =
static_cast<T*
>(
vec_[idx] );
403 vec_[idx] = (
void*)newptr;
408 template <
class T>
inline 415 template <
class T>
inline 426 template <
class T>
inline 438 template <
class T>
inline 444 add( const_cast<T*>( os[idx] ) );
447 template <
class T>
inline 452 template <
class T>
inline 463 template <
class T>
inline 466 T* res =
static_cast<T*
>(
vec_[idx]);
480 template <
class T>
inline 484 {
return isEmpty() ? 0 : (*this)[0]; }
486 {
return isEmpty() ? 0 : (*this)[0]; }
T * last()
Definition: objectset.h:487
bool nullAllowed() const
Definition: objectset.h:46
T * operator[](size_type i)
Definition: objectset.h:82
bool push_back(const T &t)
Definition: vectoraccess.h:181
virtual void removeRange(size_type from, size_type to)
Definition: objectset.h:481
T to(const F &fr)
Definition: convert.h:31
bool equalContents(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects pointed to are equal.
Definition: objectset.h:265
I indexOf(const T &, bool forward, I start=-1) const
Definition: vectoraccess.h:244
#define mGlobal(module)
Definition: commondefs.h:160
#define mCast(tp, v)
Definition: commondefs.h:120
void push(T *t)
Definition: objectset.h:63
#define od_int64
Definition: plftypes.h:34
ObjectSet()
Definition: objectset.h:286
virtual T * replace(size_type idx, T *)
Definition: objectset.h:394
int size_type
Definition: objectset.h:37
virtual bool isPresent(const T *) const
Definition: objectset.h:348
void erase()
Definition: vectoraccess.h:76
void deepCopyClone(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with clones of the objects in the other set.
Definition: objectset.h:162
void insert(I pos, const T &val)
Definition: vectoraccess.h:74
T object_type
Definition: objectset.h:38
bool isEmpty() const
Definition: odset.h:43
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
const T * operator[](const T *t) const
Definition: objectset.h:84
ObjectSet< T > & add(T *t)
Definition: objectset.h:62
void deepAppendClone(ObjectSet< T > &to, const ObjectSet< S > &from)
append clones of one set's objects to another ObjectSet.
Definition: objectset.h:141
virtual void swap(int64_t, int64_t)
Definition: objectset.h:373
virtual T * removeSingle(size_type, bool keep_order=true)
Definition: objectset.h:464
virtual int64_t nrItems() const
Definition: objectset.h:49
virtual ObjectSet< T > & doAdd(T *)
Definition: objectset.h:355
size_type size() const
Definition: objectset.h:48
bool append(TypeSetBase< T, I > &to, const TypeSetBase< S, J > &from)
append allowing a different type to be merged into set
Definition: typeset.h:205
Set of pointers to objects.
Definition: commontypes.h:28
T & getRef(ObjectSet< T > &objset, int i)
Definition: objectset.h:102
void moveToStart(const T &t)
Definition: vectoraccess.h:128
virtual bool isManaged() const
Definition: objectset.h:44
bool allow0_
Definition: objectset.h:90
void remove(I idx)
Definition: vectoraccess.h:83
virtual T * pop()
Definition: objectset.h:448
void plainErase()
Definition: objectset.h:96
const T * operator[](size_type i) const
Definition: objectset.h:83
virtual void copy(const ObjectSet< T > &)
Definition: objectset.h:427
virtual ObjectSet< T > & operator-=(T *)
Definition: objectset.h:364
virtual ~ObjectSet()
Definition: objectset.h:42
void deepCopy(ObjectSet< T > &to, const ObjectSet< S > &from)
fill an ObjectSet with copies of the objects in the other set.
Definition: objectset.h:151
void removeRange(ODSET &inst, size_type start, size_type stop)
Removes a range from the set.
Definition: odset.h:55
const T * find(const ObjectSet< T > &os, const S &val)
Get const object in set.
Definition: objectset.h:187
bool setCapacity(I sz, bool withmargin)
Definition: vectoraccess.h:153
bool addIfNew(T *)
Definition: objectset.h:453
void moveAfter(const T &t, const T &aft)
Definition: vectoraccess.h:108
bool equalObjects(const ObjectSet< T > &os1, const ObjectSet< T > &os2)
See if all objects are equal.
Definition: objectset.h:248
ObjectSet< T > & operator=(const ObjectSet< T > &)
Definition: objectset.h:296
virtual void insertAt(T *newptr, size_type)
Definition: objectset.h:409
void sort(ObjectSet< T > &os)
Sort ObjectSet. Must have operator > defined for elements.
Definition: objectset.h:224
void deepAppend(ObjectSet< T > &to, const ObjectSet< S > &from)
append copies of one set's objects to another ObjectSet.
Definition: objectset.h:131
T * first()
Definition: objectset.h:483
void deepEraseArr(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:126
void forceCrash(bool withdump)
virtual bool validIdx(int64_t) const
Definition: objectset.h:306
OpendTect.
Definition: commontypes.h:25
#define mObjectSetApplyToAllFunc(fn, op, extra)
Definition: objectset.h:112
void _ObjectSet_sortWithNull(ObjectSet< T > &os)
Sort ObjectSet when nulls are allowed no need to call.
Definition: objectset.h:204
virtual void erase()
Definition: objectset.h:75
void copy(TypeSetBase< T, I > &to, const TypeSetBase< S, I > &from)
Definition: typeset.h:221
void swap(I i, I j)
Definition: vectoraccess.h:98
VectorAccess< void *, size_type > vec_
Definition: objectset.h:89
void allowNull(bool yn=true)
Definition: objectset.h:301
#define mClass(module)
Definition: commondefs.h:161
virtual size_type indexOf(const T *) const
Definition: objectset.h:341
virtual void reverse()
Definition: objectset.h:384
virtual void insertAfter(T *newptr, size_type)
Definition: objectset.h:416
T pop_back()
Definition: vectoraccess.h:193
bool isPresent(const T &) const
Definition: vectoraccess.h:286
virtual T * get(size_type)
Definition: objectset.h:311
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:122
virtual void append(const ObjectSet< T > &)
Definition: objectset.h:439