1#ifndef DUNE_SPGRID_PARTITIONLIST_HH
2#define DUNE_SPGRID_PARTITIONLIST_HH
49 other.head_ =
nullptr;
63 unsigned int size ()
const;
78 : partition_( partition ),
83 : partition_( other.partition_ ),
84 next_( other.next_ ? new
Node( *other.next_ ) : nullptr )
88 : partition_( other.partition_ ),
91 other.next_ =
nullptr;
102 next_->append( other );
123 :
public std::iterator< std::forward_iterator_tag, const Partition >
132 node_ = node_->next();
138 operator bool ()
const {
return bool( node_ ); }
144 const Partition *operator-> ()
const { assert( *
this );
return &(node_->partition()); }
160 head_->append(
new Node( partition ) );
162 head_ =
new Node( partition );
172 const Partition *partition = findPartition(
id );
173 assert( !partition || (partition->
number() == number) );
174 return bool( partition );
182 for(
const Node *it = head_; it; it = it->
next() )
184 if( it->partition().contains(
id ) )
185 return &(it->partition());
195 for(
const Node *it = head_; it; it = it->
next() )
196 volume += it->partition().volume();
204 unsigned int size = 0;
205 for(
const Node *it = head_; it; it = it->
next() )
215 template<
class char_type,
class traits,
int dim >
216 inline std::basic_ostream< char_type, traits > &
220 std::string separator =
"";
221 for( Iterator it = partition.
begin(); it; ++it )
223 out << separator << *it;
Definition: iostream.hh:7
bool operator==(const FieldVector< ct, dim > &a, const SPNormalVector< ct, dim > &b)
Definition: normal.hh:121
std::basic_ostream< char_type, traits > & operator<<(std::basic_ostream< char_type, traits > &out, const SPCube< ct, dim > &cube)
Definition: cube.hh:148
SPMultiIndex< dim > operator*(const SPMultiIndex< dim > &a, const int &b)
Definition: multiindex.hh:260
bool operator!=(const FieldVector< ct, dim > &a, const SPNormalVector< ct, dim > &b)
Definition: normal.hh:128
Definition: partition.hh:79
unsigned int number() const
Definition: partition.hh:242
Definition: partitionlist.hh:16
Iterator end() const
Definition: partitionlist.hh:56
SPPartition< dim > Partition
Definition: partitionlist.hh:23
const Partition * findPartition(const MultiIndex &id) const
Definition: partitionlist.hh:180
int volume() const
Definition: partitionlist.hh:192
SPPartitionList(This &&other)
Definition: partitionlist.hh:34
Partition::Mesh Mesh
Definition: partitionlist.hh:26
SPPartitionList(const This &other)
Definition: partitionlist.hh:32
~SPPartitionList()
Definition: partitionlist.hh:36
Partition::MultiIndex MultiIndex
Definition: partitionlist.hh:25
This & operator+=(const Partition &partition)
Definition: partitionlist.hh:157
bool empty() const
Definition: partitionlist.hh:62
unsigned int size() const
Definition: partitionlist.hh:202
SPPartitionList()
Definition: partitionlist.hh:30
Node * head_
Definition: partitionlist.hh:66
This & operator=(const This &other)
Definition: partitionlist.hh:38
Iterator begin() const
Definition: partitionlist.hh:55
bool contains(const MultiIndex &id, unsigned int number) const
Definition: partitionlist.hh:170
Definition: partitionlist.hh:76
Node(const Node &other)
Definition: partitionlist.hh:82
Node(const Partition &partition)
Definition: partitionlist.hh:77
void append(Node *other)
Definition: partitionlist.hh:99
Node(Node &&other)
Definition: partitionlist.hh:87
const Partition & partition() const
Definition: partitionlist.hh:107
const Node * next() const
Definition: partitionlist.hh:109
~Node()
Definition: partitionlist.hh:94
Definition: partitionlist.hh:124
Iterator(const Node *node=nullptr)
Definition: partitionlist.hh:125