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
 
constexpr 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
 
constexpr 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