5 #ifndef GKO_PUBLIC_CORE_REORDER_REORDERING_BASE_HPP_
6 #define GKO_PUBLIC_CORE_REORDER_REORDERING_BASE_HPP_
11 #include <ginkgo/core/base/abstract_factory.hpp>
12 #include <ginkgo/core/base/array.hpp>
13 #include <ginkgo/core/base/executor.hpp>
14 #include <ginkgo/core/base/lin_op.hpp>
15 #include <ginkgo/core/base/polymorphic_object.hpp>
16 #include <ginkgo/core/base/utils.hpp>
33 template <
typename IndexType =
int32>
36 using index_type = IndexType;
40 return permutation_array_;
50 permutation_array_ = permutation_array;
64 std::shared_ptr<LinOp> system_matrix;
67 : system_matrix{system_matrix}
75 template <
typename IndexType =
int32>
95 template <
typename ConcreteFactory,
typename ConcreteReorderingBase,
96 typename ParametersType,
typename IndexType =
int32,
100 ParametersType, PolymorphicBase>;
121 #define GKO_ENABLE_REORDERING_BASE_FACTORY(_reordering_base, _parameters_name, \
124 const _parameters_name##_type& get_##_parameters_name() const \
126 return _parameters_name##_; \
129 class _factory_name \
130 : public ::gko::reorder::EnableDefaultReorderingBaseFactory< \
131 _factory_name, _reordering_base, _parameters_name##_type, \
133 friend class ::gko::enable_parameters_type<_parameters_name##_type, \
135 explicit _factory_name(std::shared_ptr<const ::gko::Executor> exec) \
136 : ::gko::reorder::EnableDefaultReorderingBaseFactory< \
137 _factory_name, _reordering_base, _parameters_name##_type, \
138 IndexType>(std::move(exec)) \
140 explicit _factory_name(std::shared_ptr<const ::gko::Executor> exec, \
141 const _parameters_name##_type& parameters) \
142 : ::gko::reorder::EnableDefaultReorderingBaseFactory< \
143 _factory_name, _reordering_base, _parameters_name##_type, \
144 IndexType>(std::move(exec), parameters) \
147 friend ::gko::reorder::EnableDefaultReorderingBaseFactory< \
148 _factory_name, _reordering_base, _parameters_name##_type, IndexType>; \
151 _parameters_name##_type _parameters_name##_; \
154 static_assert(true, \
155 "This assert is used to counter the false positive extra " \
156 "semi-colon warnings")
163 #endif // GKO_PUBLIC_CORE_REORDER_REORDERING_BASE_HPP_