3 #ifndef DUNE_VBVECTOR_HH
4 #define DUNE_VBVECTOR_HH
35 template<
class B,
class A=std::allocator<B> >
94 block = windowAllocator_.allocate(nblocks);
117 this->
n = _nblocks*m;
120 this->
p = allocator_.allocate(this->
n);
121 new (this->
p)B[this->
n];
134 block = windowAllocator_.allocate(nblocks);
139 block[i].
set(m,this->
p+(i*m));
159 this->
p = allocator_.allocate(this->
n);
160 new (this->
p)B[this->
n];
176 block = windowAllocator_.allocate(nblocks);
201 allocator_.deallocate(this->
p,this->
n);
206 block[--i].~window_type();
207 windowAllocator_.deallocate(block,nblocks);
221 allocator_.deallocate(this->
p,this->
n);
226 block[--i].~window_type();
227 windowAllocator_.deallocate(block,nblocks);
236 block = windowAllocator_.allocate(nblocks);
257 allocator_.deallocate(this->
p,this->
n);
262 block[--i].~window_type();
263 windowAllocator_.deallocate(block,nblocks);
267 this->
n = _nblocks*m;
270 this->
p = allocator_.allocate(this->
n);
271 new (this->
p)B[this->
n];
284 block = windowAllocator_.allocate(nblocks);
289 block[i].
set(m,this->
p+(i*m));
308 if (this->
n!=a.
n || nblocks!=a.nblocks)
315 allocator_.deallocate(this->
p,this->
n);
320 block[--i].~window_type();
321 windowAllocator_.deallocate(block,nblocks);
329 this->
p = allocator_.allocate(this->
n);
330 new (this->
p)B[this->
n];
343 block = windowAllocator_.allocate(nblocks);
422 v.
p = v.allocator_.allocate(n);
440 v.initialized =
true;
451 return (i!=it.i) || (&v!=&it.v);
457 return (i==it.i) && (&v==&it.v);
485 #ifdef DUNE_ISTL_WITH_CHECKING
486 if (initialized) DUNE_THROW(
ISTLError,
"no CreateIterator in initialized state");
505 #ifdef DUNE_ISTL_WITH_CHECKING
506 if (i>=nblocks) DUNE_THROW(
ISTLError,
"index out of range");
514 #ifdef DUNE_ISTL_WITH_CHECKING
515 if (i<0 || i>=nblocks) DUNE_THROW(
ISTLError,
"index out of range");
555 return (p+i)==(it.p+it.i);
561 return (p+i)!=(it.p+it.i);
567 return (p+i)==(it.p+it.i);
573 return (p+i)!=(it.p+it.i);
630 if (i>=0 && i<nblocks)
639 if (i>=0 && i<nblocks)
681 return (p+i)==(it.p+it.i);
687 return (p+i)!=(it.p+it.i);
693 return (p+i)==(it.p+it.i);
699 return (p+i)!=(it.p+it.i);
769 typename A::template rebind<window_type>::other windowAllocator_;