8#include <kernel/global/vector.hpp>
19 template<
typename LocalFilter_,
typename Mirror_>
24 typedef Mirror_ MirrorType;
25 typedef LocalFilter_ LocalFilterType;
28 template <
typename LocalFilter2_,
typename Mirror2_ = Mirror_>
32 template <
typename DataType2_,
typename IndexType2_>
35 static constexpr bool is_global =
true;
36 static constexpr bool is_local =
false;
42 template<
typename... Args_>
43 explicit Filter(Args_&&... args) :
44 _filter(std::forward<Args_>(args)...)
53 const LocalFilter_& local()
const
58 template<
typename OtherGlobalFilter_>
59 void convert(
const OtherGlobalFilter_ & other)
61 this->_filter.convert(other.local());
66 return Filter(_filter.clone(mode));
71 XASSERTM(&(
other.local()) != &(this->local()),
"Trying to self-clone a Global::Filter!");
73 this->local() =
other.local().clone(mode);
79 return _filter.bytes();
82 void filter_rhs(VectorType& vector)
const
84 _filter.filter_rhs(vector.local());
87 void filter_sol(VectorType& vector)
const
89 _filter.filter_sol(vector.local());
92 void filter_def(VectorType& vector)
const
94 _filter.filter_def(vector.local());
97 void filter_cor(VectorType& vector)
const
99 _filter.filter_cor(vector.local());
#define XASSERTM(expr, msg)
Assertion macro definition with custom message.
Global Filter wrapper class template.
std::size_t bytes() const
Returns the total amount of bytes allocated.
Global vector wrapper class template.
@ other
generic/other permutation strategy