1 #ifndef DASH__VIEW__LOCAL_H__INCLUDED 2 #define DASH__VIEW__LOCAL_H__INCLUDED 4 #include <dash/Types.h> 5 #include <dash/Range.h> 7 #include <dash/view/ViewTraits.h> 18 DASH__META__DEFINE_TRAIT__HAS_TYPE(local_type)
26 typename ViewValueT =
typename std::decay<ViewType>::type >
29 ->
typename std::enable_if<
30 ( std::is_pointer< typename ViewType::iterator >::value ||
40 class ContainerLocalType,
41 typename ContainerLocalDecayType
42 =
typename std::decay<ContainerLocalType>::type >
44 typename std::enable_if<
49 local(ContainerLocalType & cl) {
56 typename ContainerDecayType
57 =
typename std::decay<ContainerType>::type >
59 typename std::enable_if<
63 const typename ContainerType::local_type &
65 local(
const ContainerType & c) {
73 template <
class ViewType>
75 local(
const ViewType & v)
76 ->
typename std::enable_if<
79 dash::detail::has_type_local_type<ViewType>::value,
80 dash::IndexSetIdentity<const typename ViewType::local_type>
82 return IndexSetIdentity<const typename ViewType::local_type>(
90 template <
class ViewType>
93 ->
typename std::enable_if<
102 typename ViewValueT =
typename std::decay<ViewType>::type >
105 ->
typename std::enable_if<
108 decltype(std::forward<ViewType>(v).local())
110 return std::forward<ViewType>(v).
local();
114 template <
class ContainerType>
115 constexpr
auto local(
const ContainerType & c)
116 ->
typename std::enable_if<
124 template <
class ContainerType>
125 constexpr
auto local(
const ContainerType & c)
126 ->
typename std::enable_if<
129 dash::NViewSubMod<ContainerType, 0>
131 return dash::NViewSubMod<ContainerType, 0>(0, c.extents()[0], c);
142 template <
class GlobalIterator>
145 const GlobalIterator & g_it)
146 -> decltype((g_it - g_it.pos()).
local()) {
156 #endif // DASH__VIEW__LOCAL_H__INCLUDED constexpr auto local(ViewType &v) -> typename std::enable_if<(std::is_pointer< typename ViewType::iterator >::value||(dash::view_traits< ViewValueT >::is_local::value)), ViewType &>::type
This class is a simple memory pool which holds allocates elements of size ValueType.