1#ifndef DUNE_FEM_DOFITERATOR_HH
2#define DUNE_FEM_DOFITERATOR_HH
4#include <dune/fem/misc/bartonnackmaninterface.hh>
19 template<
class DofImp,
class DofIteratorImp >
21 :
public BartonNackmanInterface< DofIteratorInterface< DofImp, DofIteratorImp >,
33 typedef BartonNackmanInterface< ThisType, DofIteratorType > BaseType;
36 using BaseType :: asImp;
55 CHECK_INTERFACE_IMPLEMENTATION( *asImp() );
65 CHECK_INTERFACE_IMPLEMENTATION( *asImp() );
69 const DofImp &operator[] (
const int n )
const
71 CHECK_INTERFACE_IMPLEMENTATION( asImp()[ n ] );
75 DofImp &operator[] (
const int n )
77 CHECK_INTERFACE_IMPLEMENTATION( asImp()[ n ] );
89 CHECK_AND_CALL_INTERFACE_IMPLEMENTATON( asImp().
operator++() );
101 CHECK_INTERFACE_IMPLEMENTATION( asImp().
operator==( other ) );
102 return asImp().operator==( other );
113 CHECK_INTERFACE_IMPLEMENTATION( asImp().
operator!=( other ) );
114 return asImp().operator!=( other );
123 CHECK_INTERFACE_IMPLEMENTATION( asImp().
index() );
124 return asImp().index();
140 template<
class DofImp,
class DofIteratorImp >
156 using BaseType :: asImp;
159 const DofImp &operator[] (
const int n )
const
163 for(
int i = 0; i < n; ++i )
168 DofType &operator[] (
const int n )
171 for(
int i = 0; i < n; ++i )
185 return !asImp().operator==( other );
195 for( ; it != *
this; ++it )
207 template<
class DofIteratorImp >
208 class ConstDofIteratorDefault
209 :
public DofIteratorDefault< typename DofIteratorImp :: DofType,
214 typedef DofIteratorImp WrappedDofIteratorType;
217 typedef typename WrappedDofIteratorType :: DofType DofType;
219 typedef ConstDofIteratorDefault< WrappedDofIteratorType > ThisType;
220 typedef DofIteratorDefault< DofType, ThisType > BaseType;
223 WrappedDofIteratorType it_;
226 ConstDofIteratorDefault(
const WrappedDofIteratorType &it )
231 ConstDofIteratorDefault(
const ThisType &other )
237 const ThisType &operator= (
const ThisType &other )
244 const DofType& operator* ()
const
249 const DofType &operator[] (
const int n )
const
261 ThisType &operator++ ()
268 bool operator== (
const ThisType &other )
const
270 return (it_ == other.it_);
274 bool operator!= (
const ThisType &other )
const
276 return (it_ != other.it_);
286 const DofType *vector ()
const
#define CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(__interface_method_to_call__)
Definition: bartonnackmanifcheck.hh:61
default implementation of DofManagerInterface
Definition: dofiterator.hh:143
int index() const
Definition: dofiterator.hh:189
DofIteratorImp DofIteratorType
type of the implementation (Barton-Nackman)
Definition: dofiterator.hh:149
DofImp DofType
type of the DoFs
Definition: dofiterator.hh:146
interface for DoF iterators of discrete functions
Definition: dofiterator.hh:23
DofType & operator*()
obtain reference to current DoF
Definition: dofiterator.hh:53
DofIteratorImp DofIteratorType
type of the implementation (Barton-Nackman)
Definition: dofiterator.hh:29
DofImp DofType
type of the DoFs
Definition: dofiterator.hh:26
bool operator==(const DofIteratorType &other) const
check for equality
Definition: dofiterator.hh:99
DofIteratorType & operator=(const DofIteratorType &other)
assign another DoF iterator to this one
Definition: dofiterator.hh:43
bool operator!=(const DofIteratorType &other) const
check for inequality
Definition: dofiterator.hh:111
int index() const
get the global number of the current DoF
Definition: dofiterator.hh:121
DofIteratorType & operator++()
increment the iterator
Definition: dofiterator.hh:87
void reset()
reset iterator to the first position
Definition: dofiterator.hh:128
EnableIfInterOperable< T1, T2, bool >::type operator==(const ForwardIteratorFacade< T1, V1, R1, D > &lhs, const ForwardIteratorFacade< T2, V2, R2, D > &rhs)
Checks for equality.
Definition: iteratorfacades.hh:238
EnableIfInterOperable< T1, T2, bool >::type operator!=(const ForwardIteratorFacade< T1, V1, R1, D > &lhs, const ForwardIteratorFacade< T2, V2, R2, D > &rhs)
Checks for inequality.
Definition: iteratorfacades.hh:260
Dune namespace.
Definition: alignedallocator.hh:13