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/ArrayHandlerDDiskIterable.h>
6#include <molpro/linalg/array/ArrayHandlerDDiskSparse.h>
7#include <molpro/linalg/array/ArrayHandlerDefault.h>
8#include <molpro/linalg/array/ArrayHandlerDistr.h>
9#include <molpro/linalg/array/ArrayHandlerDistrDDisk.h>
10#include <molpro/linalg/array/ArrayHandlerDistrSparse.h>
11#include <molpro/linalg/array/ArrayHandlerIterable.h>
12#include <molpro/linalg/array/ArrayHandlerIterableDDisk.h>
13#include <molpro/linalg/array/ArrayHandlerIterableSparse.h>
14#include <molpro/linalg/array/ArrayHandlerSparse.h>
15#include <molpro/linalg/array/type_traits.h>
19template <
class T,
class S, ArrayFamily = array_family_v<T>, ArrayFamily = array_family_v<S>>
24template <
class T,
class S>
29template <
class T,
class S>
34template <
class T,
class S>
39template <
class T,
class S>
44template <
class T,
class S>
49template <
class T,
class S>
54template <
class T,
class S>
59template <
class T,
class S>
64template <
class T,
class S>
70template <
class T,
class S>
75template <
class T,
class S>
80template <
class T,
class S>
85template <
class T,
class S,
typename = default_handler_t<T, S>>
87 auto operator()() {
return std::make_shared<default_handler_t<T, S>>(); }
94template <
class T,
class S>
Definition ArrayHandlerDDiskDistr.h:14
Array handler between a distributed array (left), typically one held on disk, and a contiguous array ...
Definition ArrayHandlerDDiskIterable.h:24
Definition ArrayHandlerDDiskSparse.h:13
Definition ArrayHandlerDDisk.h:13
Fall back handler that calls member functions of arrays.
Definition ArrayHandlerDefault.h:15
Definition ArrayHandlerDistrDDisk.h:13
Definition ArrayHandlerDistrSparse.h:11
Definition ArrayHandlerDistr.h:13
Array handler between a contiguous array (left), e.g. std::vector or Span, and a distributed array (r...
Definition ArrayHandlerIterableDDisk.h:27
Definition ArrayHandlerIterableSparse.h:14
Array handler for two containers both of which can be iterated through using begin() and end() member...
Definition ArrayHandlerIterable.h:22
Array handler between two sparse arrays (e.g. std::map)
Definition ArrayHandlerSparse.h:16
Definition ArrayHandler.h:19
auto create_default_handler()
Creates an appropriate handler for the given array types.
Definition default_handler.h:95
typename default_handler< T, S >::value default_handler_t
Definition default_handler.h:81
ArrayFamily
A tag to distinguish different families for array types, e.g. std::vector<> is iterable,...
Definition type_traits.h:85
std::conditional_t< is_contiguous_v< S >, ArrayHandlerDDiskIterable< T, S >, ArrayHandlerDefault< T, S > > value
Definition default_handler.h:77
std::conditional_t< is_contiguous_v< T >, ArrayHandlerIterableDDisk< T, S >, ArrayHandlerDefault< T, S > > value
Definition default_handler.h:72
Definition default_handler.h:20
SFINAE functor for default handler creation allows for more customisation.
Definition default_handler.h:86
auto operator()()
Definition default_handler.h:87