iterative-solver 0.0
default_handler.h
1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_DEFAULT_HANDLER_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_DEFAULT_HANDLER_H
3#include <molpro/linalg/array/ArrayHandlerDDisk.h>
4#include <molpro/linalg/array/ArrayHandlerDDiskDistr.h>
5#include <molpro/linalg/array/ArrayHandlerDDiskSparse.h>
6#include <molpro/linalg/array/ArrayHandlerDefault.h>
7#include <molpro/linalg/array/ArrayHandlerDistr.h>
8#include <molpro/linalg/array/ArrayHandlerDistrDDisk.h>
9#include <molpro/linalg/array/ArrayHandlerDistrSparse.h>
10#include <molpro/linalg/array/ArrayHandlerIterable.h>
11#include <molpro/linalg/array/ArrayHandlerIterableSparse.h>
12#include <molpro/linalg/array/ArrayHandlerSparse.h>
13#include <molpro/linalg/array/type_traits.h>
14
15namespace molpro::linalg::array {
16
17template <class T, class S, ArrayFamily = array_family_v<T>, ArrayFamily = array_family_v<S>>
20};
21
22template <class T, class S>
25};
26
27template <class T, class S>
30};
31
32template <class T, class S>
35};
36
37template <class T, class S>
40};
41
42template <class T, class S>
45};
46
47template <class T, class S>
50};
51
52template <class T, class S>
55};
56
57template <class T, class S>
60};
61
62template <class T, class S>
65};
66
67template <class T, class S>
69
70namespace detail {
72template <class T, class S, typename = default_handler_t<T, S>>
74 auto operator()() { return std::make_shared<default_handler_t<T, S>>(); }
75};
76} // namespace detail
77
81template <class T, class S>
84}
85
86} // namespace molpro::linalg::array
87#endif // LINEARALGEBRA_SRC_MOLPRO_LINALG_ARRAY_DEFAULT_HANDLER_H
Definition: ArrayHandlerDDiskDistr.h:14
Definition: ArrayHandlerDDiskSparse.h:14
Definition: ArrayHandlerDDisk.h:13
Fall back handler that calls member functions of arrays.
Definition: ArrayHandlerDefault.h:16
Definition: ArrayHandlerDistrDDisk.h:14
Definition: ArrayHandlerDistrSparse.h:12
Definition: ArrayHandlerDistr.h:14
Definition: ArrayHandlerIterableSparse.h:14
Array handler for two containers both of which can be iterated through using begin() and end() member...
Definition: ArrayHandlerIterable.h:35
Array handler between two sparse arrays (e.g. std::map)
Definition: ArrayHandlerSparse.h:17
Definition: ArrayHandler.h:22
auto create_default_handler()
Creates an appropriate handler for the given array types.
Definition: default_handler.h:82
typename default_handler< T, S >::value default_handler_t
Definition: default_handler.h:68
ArrayFamily
A tag to distinguish different families for array types, e.g. std::vector<> is iterable,...
Definition: type_traits.h:71
Definition: default_handler.h:18
SFINAE functor for default handler creation allows for more customisation.
Definition: default_handler.h:73
auto operator()()
Definition: default_handler.h:74