17 #ifndef vectoraccess_h 24 template <
class T,
class I>
34 {
return copy( ts ); }
36 inline size_type size()
const;
38 inline virtual bool setSize(size_type,T val=T());
40 inline virtual bool setCapacity(size_type sz,
bool withmargin);
42 inline virtual size_type getCapacity()
const;
43 inline void setAll(T);
44 inline void replace(T,T);
46 inline T&
get(size_type);
47 inline const T&
get(size_type)
const;
49 inline const T& first()
const;
51 inline const T& last()
const;
52 inline virtual bool validIdx(
od_int64)
const;
53 inline virtual size_type
indexOf(T,
bool forward=
true,
54 size_type start=-1)
const;
55 inline bool isPresent(
const T&)
const;
56 inline size_type count(
const T&)
const;
59 inline virtual void insert(size_type,
const T&);
60 inline bool push(
const T&);
62 inline virtual bool append(
const T*,size_type);
64 inline virtual bool addIfNew(
const T&);
72 bool must_preserve_order=
false);
76 inline virtual void move(size_type from,size_type
to);
78 inline virtual void reverse();
80 inline virtual void erase();
81 inline virtual void removeSingle(size_type,
82 bool preserver_order=
true);
83 inline virtual void removeRange(size_type from,size_type to);
86 inline virtual T*
arr() {
return gtArr(); }
87 inline virtual const T*
arr()
const {
return gtArr(); }
88 inline std::vector<T>& vec();
89 inline const std::vector<T>& vec()
const;
92 inline const T&
operator[](size_type i)
const {
return get(i); }
105 inline virtual T* gtArr()
const;
110 template <
class T,
class I>
112 {
return ts.get( i ); }
113 template <
class T,
class I>
115 {
return ts.get( i ); }
155 operator bool()
const {
return (
bool) val_; }
186 template <
class T,
class I>
189 if ( a.
size() != b.
size() )
return false;
191 const I sz = a.
size();
192 for ( I idx=0; idx<sz; idx++ )
193 if ( !(a[idx] == b[idx]) )
return false;
198 template <
class T,
class I>
200 {
return !(a == b); }
204 template <
class T,
class I,
class J,
class S>
207 const J sz = from.
size();
211 for ( J idx=0; idx<sz; idx++ )
212 to.
add( (T)from[idx] );
220 template <
class T,
class I,
class S>
223 if ( &to == &from )
return;
230 template <
class T,
class I>
233 T tmp;
const I sz = ts.
size();
234 for ( I d=sz/2; d>0; d=d/2 )
235 for ( I i=d; i<sz; i++ )
236 for ( I j=i-d; j>=0 && ts[j]>ts[j+d]; j-=d )
237 { tmp = ts[j]; ts[j] = ts[j+d]; ts[j+d] = tmp; }
242 template <
class T,
class I>
inline 246 template <
class T,
class I>
inline 248 { setSize( nr, typ ); }
250 template <
class T,
class I>
inline 254 template <
class T,
class I>
inline 259 template <
class T,
class I>
inline 262 template <
class T,
class I>
inline 264 {
return vec_.size(); }
266 template <
class T,
class I>
inline 268 {
return vec_.setSize( sz, val ); }
270 template <
class T,
class I>
inline 272 {
return vec_.getCapacity(); }
274 template <
class T,
class I>
inline 276 {
return vec_.setCapacity( sz, withmargin ); }
278 template <
class T,
class I>
inline 280 {
vec_.fillWith( val ); }
282 template <
class T,
class I>
inline 284 {
vec_.replace( val, newval ); }
287 template <
class T,
class I>
inline 289 {
return vec_.validIdx( (I)idx ); }
291 template <
class T,
class I>
inline 301 template <
class T,
class I>
inline 311 template <
class T,
class I>
inline 313 {
return vec_.first(); }
315 template <
class T,
class I>
inline 317 {
return vec_.first(); }
319 template <
class T,
class I>
inline 321 {
return vec_.last(); }
323 template <
class T,
class I>
inline 325 {
return vec_.last(); }
327 template <
class T,
class I>
inline 329 {
return vec_.pop_back(); }
331 template <
class T,
class I>
inline 333 {
return vec_.indexOf( typ, forward, start ); }
335 template <
class T,
class I>
inline 337 {
return vec_.isPresent(t); }
339 template <
class T,
class I>
inline 341 {
return vec_.count( typ ); }
343 template <
class T,
class I>
inline 345 {
vec_.push_back( typ );
return *
this; }
347 template <
class T,
class I>
inline 349 {
return vec_.push_back( typ ); }
351 template <
class T,
class I>
inline 353 {
vec_.erase( typ );
return *
this; }
355 template <
class T,
class I>
inline 357 {
return this == &ts ? *
this :
copy( ts.
arr(), ts.
size() ); }
359 template <
class T,
class I>
inline 363 template <
class T,
class I>
inline 365 {
vec_.remove( i1, i2 ); }
367 template <
class T,
class I>
inline 369 {
vec_.insert( idx, typ );}
371 template <
class T,
class I>
inline 373 {
return vec_.vec(); }
375 template <
class T,
class I>
inline 377 {
return vec_.vec(); }
379 template <
class T,
class I>
inline 381 {
return size()>0 ?
const_cast<T*
>(&(*this)[0]) : 0; }
384 template <
class T,
class I>
inline 390 T tmp =
vec_[(I)idx0];
396 template <
class T,
class I>
inline 402 T tmp =
vec_[idxfrom];
404 vec_.remove( idxfrom < idxto ? idxfrom : idxfrom+1 );
408 template <
class T,
class I>
inline 413 for ( I idx=0; idx<hsz; idx++ )
414 swap( idx, sz-1-idx );
418 template <
class T,
class I>
inline 425 for ( I idx=0; idx<sz; idx++ )
426 (*
this)[idx] = tarr[idx];
432 template <
class T,
class I>
inline 443 template <
class T,
class I>
inline 446 if ( !sz )
return true;
451 for ( I idx=0; idx<sz; idx++ )
458 template <
class T,
class I>
461 const I sz = ts.
size();
462 const T* ptr = ts.
arr();
463 for ( I idx=0; idx<sz; idx++, ptr++ )
468 template <
class T,
class I>
471 for ( I idx=0; idx<
size(); idx++ )
480 template <
class T,
class I>
484 const I sz = ts.
size();
485 for ( I idx=0; idx<sz; idx++ )
487 const T typ = ts[idx];
488 for ( I idy=0; idy<
size(); idy++ )
490 if (
vec_[idy] == typ )
497 template <
class T,
class I>
inline 501 { *
this += typ;
return true; }
506 template <
class T,
class I>
inline 513 const I lastidx =
size()-1;
514 if ( idx != lastidx )
516 vec_.remove( lastidx );
Needed because the std lib has a crazy specialisation vector<bool>.
Definition: typeset.h:149
virtual void insert(size_type, const T &)
Definition: typeset.h:368
bool operator!=(const TypeSetBase< T, I > &a, const TypeSetBase< T, I > &b)
Definition: typeset.h:199
virtual void swap(int64_t, int64_t)
Definition: typeset.h:385
BoolTypeSetType(bool v=false)
Definition: typeset.h:153
Large Value Vector.
Definition: typeset.h:170
T to(const F &fr)
Definition: convert.h:31
char val_
Definition: typeset.h:160
TypeSet()
Definition: typeset.h:135
virtual void createUnion(const TypeSetBase< T, I > &)
Definition: typeset.h:459
#define mGlobal(module)
Definition: commondefs.h:160
bool operator==(const TypeSetBase< T, I > &a, const TypeSetBase< T, I > &b)
Definition: typeset.h:187
std::vector< T > & vec()
Definition: typeset.h:372
#define od_int64
Definition: plftypes.h:34
virtual ~TypeSetBase()
Definition: typeset.h:260
TypeSetBase< T, I > & add(const T &)
Definition: typeset.h:344
virtual void createIntersection(const TypeSetBase< T, I > &)
Only keeps common items.
Definition: typeset.h:469
T object_type
Definition: typeset.h:30
TypeSet(int nr, T typ)
Definition: typeset.h:137
T & get(size_type)
Definition: typeset.h:292
virtual bool setCapacity(size_type sz, bool withmargin)
Definition: typeset.h:275
virtual size_type getCapacity() const
Definition: typeset.h:271
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
virtual void createDifference(const TypeSetBase< T, I > &, bool must_preserve_order=false)
Removes all items present in other set.
Definition: typeset.h:481
Base class for TypeSet, usually not used as such.
Definition: typeset.h:25
Simple vector-based container simplifying index-based work.
Definition: vectoraccess.h:36
T & getRef(TypeSetBase< T, I > &ts, I i)
Definition: typeset.h:111
virtual T * arr()
3rd party access
Definition: typeset.h:86
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
virtual T * gtArr() const
Definition: typeset.h:380
I size_type
Definition: typeset.h:29
Set of (small) copyable elements.
Definition: commontypes.h:26
virtual void reverse()
Definition: typeset.h:409
virtual bool addIfNew(const T &)
Definition: typeset.h:498
void sort(TypeSetBase< T, I > &ts)
Sort TypeSetBase. Must have operator > defined for elements.
Definition: typeset.h:231
LargeValVec(const TypeSet< T > &t)
Definition: typeset.h:180
virtual const T * arr() const
Definition: typeset.h:87
virtual void move(size_type from, size_type to)
Definition: typeset.h:397
TypeSetBase< T, I > & operator+=(const T &t)
Definition: typeset.h:93
LargeValVec(int64_t nr, T typ)
Definition: typeset.h:176
T & last()
Definition: typeset.h:320
T pop()
Definition: typeset.h:328
VectorAccess< T, I > vec_
Definition: typeset.h:103
void removeRange(ODSET &inst, size_type start, size_type stop)
Removes a range from the set.
Definition: odset.h:55
size_type count(const T &) const
Definition: typeset.h:340
T & operator[](size_type i)
Definition: typeset.h:91
virtual bool append(const T *, size_type)
Definition: typeset.h:444
bool push(const T &)
Definition: typeset.h:348
bool isPresent(const T &) const
Definition: typeset.h:336
TypeSet< BoolTypeSetType > BoolTypeSet
Definition: typeset.h:164
size_type size() const
Definition: typeset.h:263
virtual int64_t nrItems() const
Definition: typeset.h:37
void forceCrash(bool withdump)
TypeSetBase< T, I > & operator-=(const T &t)
Definition: typeset.h:352
virtual void erase()
Definition: typeset.h:360
OpendTect.
Definition: commontypes.h:25
TypeSet(const TypeSet< T > &t)
Definition: typeset.h:141
virtual bool setSize(size_type, T val=T())
Definition: typeset.h:267
const T & operator[](size_type i) const
Definition: typeset.h:92
LargeValVec(const T *t, int64_t nr)
Definition: typeset.h:178
void copy(TypeSetBase< T, I > &to, const TypeSetBase< S, I > &from)
Definition: typeset.h:221
void setAll(T)
Definition: typeset.h:279
virtual void removeSingle(size_type, bool preserver_order=true)
Definition: typeset.h:507
#define mClass(module)
Definition: commondefs.h:161
bool operator=(bool v)
Definition: typeset.h:156
virtual TypeSetBase< T, I > & copy(const T *, size_type)
Definition: typeset.h:419
virtual size_type indexOf(T, bool forward=true, size_type start=-1) const
Definition: typeset.h:332
virtual bool validIdx(int64_t) const
Definition: typeset.h:288
T & first()
Definition: typeset.h:312
TypeSetBase()
Definition: typeset.h:243
TypeSet(const T *t, int nr)
Definition: typeset.h:139
virtual void removeRange(size_type from, size_type to)
Definition: typeset.h:364
void replace(T, T)
Definition: typeset.h:283
LargeValVec()
Definition: typeset.h:174