8 #ifndef OPENFPM_DATA_SRC_GRID_GRID_BASE_IMPL_LAYOUT_HPP_
9 #define OPENFPM_DATA_SRC_GRID_GRID_BASE_IMPL_LAYOUT_HPP_
35 t.setMemory(*
new S());
38 if (
sz != 0) t.allocate(
sz);
52 template<
typename s_m>
59 frswap(s_m & swap_dst, s_m & swap_src)
60 :swap_src(swap_src),swap_dst(swap_dst)
67 boost::fusion::at_c<T::value>(swap_dst).swap(boost::fusion::at_c<T::value>(swap_src));
73 template<unsigned int p, typename layout, typename data_type, typename g1_type, typename key_type, unsigned int sel = 2*is_layout_mlin<layout>::value +
is_layout_inte<layout>::value >
76 static inline auto get(
const data_type & data_,
const g1_type & g1,
const key_type & v1) -> decltype(boost::fusion::at_c<p>(data_.mem_r->operator[](g1.LinId(v1)))) &
78 return boost::fusion::at_c<p>(data_.mem_r->operator[](g1.LinId(v1)));
81 static inline auto get_lin(
const data_type & data_,
const g1_type & g1,
const size_t lin_id) -> decltype(boost::fusion::at_c<p>(data_.mem_r->operator[](lin_id))) &
83 return boost::fusion::at_c<p>(data_.mem_r->operator[](lin_id));
88 template<
unsigned int p,
typename layout,
typename data_type,
typename g1_type,
typename key_type>
89 struct mem_get<p,layout,data_type,g1_type,key_type,1>
91 static inline auto get(
const data_type & data_,
const g1_type & g1,
const key_type & v1) -> decltype(boost::fusion::at_c<p>(data_).mem_r->operator[](g1.LinId(v1)))
93 return boost::fusion::at_c<p>(data_).mem_r->operator[](g1.LinId(v1));
96 static inline auto get_lin(
const data_type & data_,
const g1_type & g1,
size_t lin_id) -> decltype(boost::fusion::at_c<p>(data_).mem_r->operator[](lin_id))
98 return boost::fusion::at_c<p>(data_).mem_r->operator[](lin_id);
104 template<typename S, typename layout, typename data_type, typename g1_type, unsigned int sel = 2*is_layout_mlin<layout>::value +
is_layout_inte<layout>::value >
107 static inline void setMemory(data_type & data_,
const g1_type & g1,
bool & is_mem_init)
112 data_.setMemory(*mem);
115 if (g1.size() != 0) data_.allocate(g1.size());
122 template<
typename S,
typename layout,
typename data_type,
typename g1_type>
125 static inline void setMemory(data_type & data_,
const g1_type & g1,
bool & is_mem_init)
131 boost::fusion::for_each(data_,all);
139 template<unsigned int dim , typename T, typename layout, typename data_type, typename g1_type, typename key_type, unsigned int sel = 2*is_layout_mlin<layout>::value +
is_layout_inte<layout>::value >
154 template<
unsigned int dim,
typename T,
typename layout,
typename data_type,
typename g1_type,
typename key_type>
155 struct mem_geto<dim,T,layout,data_type,g1_type,key_type,1>
170 template<typename grid_type, typename S , typename layout, typename data_type, unsigned int sel = 2*is_layout_mlin<layout>::value +
is_layout_inte<layout>::value >
175 grid_new.setMemory(static_cast<S&>(data_.getMemory()));
184 template<
typename gr
id_type,
typename S ,
typename layout,
typename data_type>
189 std::cerr << __FILE__ <<
":" <<
"__LINE__" <<
" Error, " << demangle(
typeid(
grid_type).name()) <<
" this structure does not support setting from external memory" << std::endl;
195 template<typename T , typename layout, typename data_type, typename grid_type, unsigned int sel = 2*is_layout_mlin<layout>::value +
is_layout_inte<layout>::value >
198 static inline void swap(data_type & data_dst, data_type & data_src)
201 data_dst.swap(data_src);
206 template<
typename T ,
typename layout,
typename data_type,
typename gr
id_type>
209 static inline void swap(data_type & data_dst, data_type & data_src)
214 boost::mpl::for_each_ref< boost::mpl::range_c<int,0,T::max_prop> >(sw);
void operator()(T &t) const
It call the allocate function for each member.
allocate(size_t sz)
constructor it fix the size
size_t sz
size to allocate
void operator()(T &t) const
It call the allocate function for each member.
This is a distributed grid.
frswap(s_m &swap_dst, s_m &swap_src)
constructor
static void setMemory(data_type &data_, const g1_type &g1, bool &is_mem_init)
this class is a functor for "for_each" algorithm
this class is a functor for "for_each" algorithm
static void setMemory(data_type &data_, const g1_type &g1, bool &is_mem_init)