diff --git a/dune/gdt/localfunctional/interface.hh b/dune/gdt/localfunctional/interface.hh index abc909467cfc18e35406846143d935c919889c50..4db9b6d5633952fd4680c570d39867591df8638e 100644 --- a/dune/gdt/localfunctional/interface.hh +++ b/dune/gdt/localfunctional/interface.hh @@ -8,9 +8,10 @@ #include <vector> -#include <dune/common/bartonnackmanifcheck.hh> #include <dune/common/dynvector.hh> +#include <dune/stuff/common/crtp.hh> + #include <dune/gdt/basefunctionset/interface.hh> namespace Dune { @@ -19,15 +20,15 @@ namespace LocalFunctional { template <class Traits> -class Codim0Interface +class Codim0Interface : public Stuff::CRTPInterface<Codim0Interface<Traits>, Traits> { public: typedef typename Traits::derived_type derived_type; size_t numTmpObjectsRequired() const { - CHECK_INTERFACE_IMPLEMENTATION(asImp().numTmpObjectsRequired()); - return asImp().numTmpObjectsRequired(); + CHECK_CRTP(this->as_imp().numTmpObjectsRequired()); + return this->as_imp().numTmpObjectsRequired(); } /** @@ -43,30 +44,21 @@ public: void apply(const BaseFunctionSetInterface<T, D, d, R, r, rC>& testBase, Dune::DynamicVector<R>& ret, std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const { - CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(asImp().apply(testBase, ret, tmpLocalVectors)); - } - - derived_type& asImp() - { - return static_cast<derived_type&>(*this); - } - - const derived_type& asImp() const - { - return static_cast<const derived_type&>(*this); + CHECK_AND_CALL_CRTP(this->as_imp().apply(testBase, ret, tmpLocalVectors)); } }; // class Codim0Interface + template <class Traits> -class Codim1Interface +class Codim1Interface : public Stuff::CRTPInterface<Codim1Interface<Traits>, Traits> { public: typedef typename Traits::derived_type derived_type; size_t numTmpObjectsRequired() const { - CHECK_INTERFACE_IMPLEMENTATION(asImp().numTmpObjectsRequired()); - return asImp().numTmpObjectsRequired(); + CHECK_CRTP(this->as_imp().numTmpObjectsRequired()); + return this->as_imp().numTmpObjectsRequired(); } /** @@ -83,17 +75,7 @@ public: void apply(const BaseFunctionSetInterface<T, D, d, R, r, rC>& testBase, const IntersectionType& intersection, Dune::DynamicVector<R>& ret, std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const { - CHECK_AND_CALL_INTERFACE_IMPLEMENTATION(asImp().apply(testBase, intersection, ret, tmpLocalVectors)); - } - - derived_type& asImp() - { - return static_cast<derived_type&>(*this); - } - - const derived_type& asImp() const - { - return static_cast<const derived_type&>(*this); + CHECK_AND_CALL_CR(this->as_imp().apply(testBase, intersection, ret, tmpLocalVectors)); } }; // class Codim1Interface