3 #ifndef DUNE_ISTL_BASEARRAY_HH
4 #define DUNE_ISTL_BASEARRAY_HH
13 #include <dune/common/iteratorfacades.hh>
39 template<
class B,
class A=std::allocator<B> >
61 #ifdef DUNE_ISTL_WITH_CHECKING
62 if (i>=
n) DUNE_THROW(
ISTLError,
"index out of range");
70 #ifdef DUNE_ISTL_WITH_CHECKING
71 if (i>=
n) DUNE_THROW(
ISTLError,
"index out of range");
79 :
public RandomAccessIteratorFacade<RealIterator<T>, T>
141 B& dereference ()
const
146 void advance(std::ptrdiff_t d)
270 template<
class B,
class A=std::allocator<B> >
360 template<
class B,
class A=std::allocator<B> >
398 new (this->
p)B[this->
n];
414 new (this->
p)B[this->
n];
434 new (this->
p)B[this->
n];
460 if (this->
n==_n)
return;
471 new (this->
p)B[this->
n];
496 new (this->
p)B[this->
n];
512 return this->
operator=(static_cast<const base_array&>(a));
542 template<
class B,
class A=std::allocator<B> >
564 if (lb ==
j+
n || *lb != i)
565 DUNE_THROW(
ISTLError,
"index "<<i<<
" not in compressed array");
573 if (lb ==
j+
n || *lb != i)
574 DUNE_THROW(
ISTLError,
"index "<<i<<
" not in compressed array");
581 :
public BidirectionalIteratorFacade<RealIterator<T>, T>
599 : p(_p), j(_j), i(_i)
606 : p(it.p), j(it.j), i(it.i)
663 B& dereference ()
const
706 return (lb !=
j+
n && *lb == i)
744 return (lb !=
j+
n && *lb == i)
base_array(size_type _n)
make array with _n components
Definition: basearray.hh:393
iterator begin()
begin iterator
Definition: basearray.hh:160
void move(difference_type offset, size_type newsize)
increment pointer by offset and set size
Definition: basearray.hh:324
const_iterator find(size_type i) const
random access returning iterator (end if not contained)
Definition: basearray.hh:224
const_iterator find(size_type i) const
random access returning iterator (end if not contained)
Definition: basearray.hh:741
size_type offset() const
offset from the first entry.
Definition: basearray.hh:644
Extend base_array_unmanaged by functions to manipulate.
Definition: basearray.hh:271
base_array_unmanaged< B, A >::size_type size_type
The type used for the index access.
Definition: basearray.hh:380
iterator beforeBegin()
Definition: basearray.hh:697
const_iterator end() const
end const_iterator
Definition: basearray.hh:721
size_type n
Definition: basearray.hh:763
B * p
Definition: basearray.hh:251
base_array_unmanaged< B, A >::iterator iterator
make iterators available as types
Definition: basearray.hh:284
A allocator_type
export the allocator type
Definition: basearray.hh:371
iterator end()
end iterator
Definition: basearray.hh:683
RealIterator< B > iterator
The iterator type.
Definition: basearray.hh:674
iterator class for sequential access
Definition: basearray.hh:580
derive error class from the base class in common
Definition: istlexception.hh:16
base_array()
makes empty array
Definition: basearray.hh:388
bool equals(const RealIterator< const ValueType > &it) const
equality
Definition: basearray.hh:618
RealIterator(const B *_p, B *_i)
Definition: basearray.hh:95
iterator find(size_type i)
random access returning iterator (end if not contained)
Definition: basearray.hh:703
remove_const< T >::type ValueType
The unqualified value type.
Definition: basearray.hh:585
B * p
Definition: basearray.hh:764
bool equals(const RealIterator< const ValueType > &other) const
equality
Definition: basearray.hh:116
Matrix & A
Definition: matrixmatrix.hh:216
const_iterator begin() const
begin const_iterator
Definition: basearray.hh:715
const_iterator beforeBegin() const
Definition: basearray.hh:218
void move(difference_type offset)
increment pointer by offset, leave size
Definition: basearray.hh:331
iterator find(size_type i)
random access returning iterator (end if not contained)
Definition: basearray.hh:186
A::difference_type difference_type
The type used for the difference between two iterator positions.
Definition: basearray.hh:293
RealIterator< B > iterator
iterator type for sequential access
Definition: basearray.hh:156
A simple array container for objects of type B.
Definition: basearray.hh:40
base_array_window(B *_p, size_type _n)
make array from given pointer and size
Definition: basearray.hh:303
const_iterator beforeBegin() const
Definition: basearray.hh:735
A::size_type size_type
the type for the index access
Definition: basearray.hh:53
A::size_type size_type
The type used for the index access.
Definition: basearray.hh:556
bool equals(const RealIterator< ValueType > &it) const
equality
Definition: basearray.hh:611
const_iterator beforeEnd() const
Definition: basearray.hh:728
base_array(const base_array &a)
copy constructor
Definition: basearray.hh:407
base_array_unmanaged< B, A >::const_iterator const_iterator
make iterators available as types
Definition: basearray.hh:377
void setindex(size_type k)
Set index corresponding to pointer.
Definition: basearray.hh:632
iterator beforeEnd()
Definition: basearray.hh:173
base_array_unmanaged()
makes empty array
Definition: basearray.hh:243
const_iterator beforeEnd() const
Definition: basearray.hh:211
size_type n
Definition: basearray.hh:250
~base_array()
free dynamic memory
Definition: basearray.hh:447
iterator beforeBegin()
Definition: basearray.hh:180
base_array_unmanaged< B, A >::iterator iterator
make iterators available as types
Definition: basearray.hh:374
iterator end()
end iterator
Definition: basearray.hh:166
A::difference_type difference_type
The type used for the difference between two iterator positions.
Definition: basearray.hh:383
size_type * j
Definition: basearray.hh:765
B & operator[](size_type i)
random access to blocks, assumes ascending ordering
Definition: basearray.hh:561
A allocator_type
export the allocator type
Definition: basearray.hh:553
RealIterator()
constructor
Definition: basearray.hh:593
B member_type
export the type representing the components
Definition: basearray.hh:47
RealIterator< const B > const_iterator
const_iterator class for sequential access
Definition: basearray.hh:712
This container extends base_array_unmanaged by memory management with the usual copy semantics provid...
Definition: basearray.hh:361
const_iterator begin() const
begin const_iterator
Definition: basearray.hh:198
RealIterator(const RealIterator< ValueType > &it)
Copy constructor from mutable iterator.
Definition: basearray.hh:605
RealIterator()
constructor
Definition: basearray.hh:91
RealIterator< const B > const_iterator
iterator class for sequential access
Definition: basearray.hh:195
A allocator_
Definition: basearray.hh:517
B member_type
export the type representing the components
Definition: basearray.hh:368
B * getptr()
return the pointer
Definition: basearray.hh:337
iterator beforeEnd()
Definition: basearray.hh:690
base_array_unmanaged< B, A >::size_type size_type
The type used for the index access.
Definition: basearray.hh:290
Iterator implementation class.
Definition: basearray.hh:78
void resize(size_type _n)
reallocate array to given size, any data is lost
Definition: basearray.hh:458
void advance(difference_type newsize)
advance pointer by newsize elements and then set size to new size
Definition: basearray.hh:317
RealIterator(const RealIterator< ValueType > &it)
Definition: basearray.hh:98
base_array(const base_array_unmanaged< B, A > &_a)
construct from base class object
Definition: basearray.hh:426
size_type index() const
return index
Definition: basearray.hh:103
A allocator_type
export the allocator type
Definition: basearray.hh:281
remove_const< T >::type ValueType
The unqualified value type.
Definition: basearray.hh:83
base_array_window()
makes empty array
Definition: basearray.hh:298
B member_type
export the type representing the components
Definition: basearray.hh:550
A allocator_type
export the allocator type
Definition: basearray.hh:50
size_type index() const
return index corresponding to pointer
Definition: basearray.hh:626
base_array_unmanaged< B, A >::const_iterator const_iterator
make iterators available as types
Definition: basearray.hh:287
const_iterator end() const
end const_iterator
Definition: basearray.hh:204
B member_type
export the type representing the components
Definition: basearray.hh:278
size_type size() const
number of blocks in the array (are of size 1 here)
Definition: basearray.hh:236
RealIterator(B *_p, size_type *_j, size_type _i)
constructor
Definition: basearray.hh:598
size_type size() const
number of blocks in the array (are of size 1 here)
Definition: basearray.hh:752
std::ptrdiff_t distanceTo(const RealIterator &o) const
Definition: basearray.hh:122
bool equals(const RealIterator< ValueType > &other) const
equality
Definition: basearray.hh:109
base_array & operator=(const base_array &a)
assignment
Definition: basearray.hh:480
base_array_unmanaged(size_type n_, B *p_)
make an initialized array
Definition: basearray.hh:247
compressed_base_array_unmanaged()
makes empty array
Definition: basearray.hh:759
void set(size_type _n, B *_p)
set pointer and length
Definition: basearray.hh:310
A simple array container with non-consecutive index set.
Definition: basearray.hh:543
B & operator[](size_type i)
random access to blocks
Definition: basearray.hh:59
iterator begin()
begin iterator
Definition: basearray.hh:677