1#ifndef DUNE_SPGRID_CACHEDPARTITIONLIST_HH
2#define DUNE_SPGRID_CACHEDPARTITIONLIST_HH
6#include <dune/grid/common/exceptions.hh>
31 : first_(
std::numeric_limits< unsigned int >::
max() ),
32 last_(
std::numeric_limits< unsigned int >::
min() ),
47 *(
Base *)
this = other;
52 bool contains (
const unsigned int number )
const;
62 unsigned int first_, last_;
75 const bool inRange = (number >= minNumber()) && (number <= maxNumber());
76 return inRange && (cache_[ number - minNumber() ] != 0);
85 if( contains( number ) )
86 return cache_[ number - minNumber() ]->partition().contains(
id );
96 assert( contains( number ) );
97 return cache_[ number - minNumber() ]->partition();
121 for(
const Node *it = Base::head_; it; it = it->
next() )
123 first_ =
std::min( first_, it->partition().number() );
124 last_ =
std::max( last_, it->partition().number() );
129 const unsigned int cacheSize = last_ - first_ + 1;
130 cache_ =
new const Node *[ cacheSize ];
131 for(
unsigned int i = 0; i < cacheSize; ++i )
135 for(
const Node *it = Base::head_; it; it = it->
next() )
138 if( cache_[ number - first_ ] != 0 )
139 DUNE_THROW( GridError,
"Partition number " << number <<
" is not unique." );
140 cache_[ number - first_ ] = it;
Dune::SPMultiIndex< dim > min(const Dune::SPMultiIndex< dim > &a, const Dune::SPMultiIndex< dim > &b)
Definition: multiindex.hh:294
Dune::SPMultiIndex< dim > max(const Dune::SPMultiIndex< dim > &a, const Dune::SPMultiIndex< dim > &b)
Definition: multiindex.hh:305
Definition: iostream.hh:7
Definition: cachedpartitionlist.hh:19
void updateCache()
Definition: cachedpartitionlist.hh:116
const This & operator=(const This &other)
Definition: cachedpartitionlist.hh:45
SPCachedPartitionList()
Definition: cachedpartitionlist.hh:30
SPCachedPartitionList(const This &other)
Definition: cachedpartitionlist.hh:36
Base::MultiIndex MultiIndex
Definition: cachedpartitionlist.hh:27
const Partition & partition(const unsigned int number) const
Definition: cachedpartitionlist.hh:94
Base::Node Node
Definition: cachedpartitionlist.hh:24
bool contains(const MultiIndex &id, const unsigned int number) const
Definition: cachedpartitionlist.hh:83
bool contains(const unsigned int number) const
Definition: cachedpartitionlist.hh:73
unsigned int maxNumber() const
Definition: cachedpartitionlist.hh:109
Base::Partition Partition
Definition: cachedpartitionlist.hh:28
~SPCachedPartitionList()
Definition: cachedpartitionlist.hh:43
unsigned int minNumber() const
Definition: cachedpartitionlist.hh:102
Definition: partition.hh:79
unsigned int number() const
Definition: partition.hh:242
Definition: partitionlist.hh:16
Definition: partitionlist.hh:76
const Partition & partition() const
Definition: partitionlist.hh:107
const Node * next() const
Definition: partitionlist.hh:109