dune-common  2.4
function.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_FUNCTION_HH
4 #define DUNE_FUNCTION_HH
5 
6 
7 #include "typetraits.hh"
8 
9 namespace Dune {
10 
26  template <class Domain, class Range>
27  class Function
28  {
29  typedef typename ConstantVolatileTraits<typename TypeTraits< Domain >::ReferredType >::UnqualifiedType RawDomainType;
30  typedef typename ConstantVolatileTraits<typename TypeTraits< Range >::ReferredType >::UnqualifiedType RawRangeType;
31 
32  public:
33 
35  typedef RawRangeType RangeType;
36 
38  typedef RawDomainType DomainType;
39 
41  struct Traits
42  {
43  typedef RawDomainType DomainType;
44  typedef RawRangeType RangeType;
45  };
46 
53  void evaluate(const typename Traits::DomainType& x, typename Traits::RangeType& y) const;
54  }; // end of Function class
55 
56 
57 
65  template <class DomainType, class RangeType>
67  public Function<const DomainType&, RangeType&>
68  {
69  public:
71 
72  virtual ~VirtualFunction() {}
79  virtual void evaluate(const typename Traits::DomainType& x, typename Traits::RangeType& y) const = 0;
80  }; // end of VirtualFunction class
81 
84 } // end namespace
85 
86 #endif
RawRangeType RangeType
Raw type of input variable with removed reference and constness.
Definition: function.hh:35
Function< const DomainType &, RangeType & >::Traits Traits
Definition: function.hh:70
RawDomainType DomainType
Raw type of output variable with removed reference and constness.
Definition: function.hh:38
Virtual base class template for function classes.
Definition: function.hh:66
virtual void evaluate(const typename Traits::DomainType &x, typename Traits::RangeType &y) const =0
Function evaluation.
Traits class containing raw types.
Definition: function.hh:41
Base class template for function classes.
Definition: function.hh:27
Dune namespace.
Definition: alignment.hh:9
virtual ~VirtualFunction()
Definition: function.hh:72
RawDomainType DomainType
Definition: function.hh:43
void evaluate(const typename Traits::DomainType &x, typename Traits::RangeType &y) const
Function evaluation.
Determines wether a type is const or volatile and provides the unqualified types. ...
Definition: typetraits.hh:80
Traits for type conversions and type information.
RawRangeType RangeType
Definition: function.hh:44