OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
object_si_d< v_src, v_dst, OBJ_ENCAP_CHUNKING, prp... > Struct Template Reference

It copy the properties from one object to another. More...

Detailed Description

template<typename v_src, typename v_dst, int... prp>
struct object_si_d< v_src, v_dst, OBJ_ENCAP_CHUNKING, prp... >

It copy the properties from one object to another.

Given a set of properties for the source object (0,1,3) it copy that properties to the destination object properties (0,1,2)

For object we mean an object that follow the OpenFPM data structure format, see openFPM_data wiki for more information

Create a compile-time object and copy <em>from</em> the selected properties

typedef Point_test<float> p;
typedef Point_test<float>::type vboost;
typedef object_creator<Point_test<float>::type,0,1,4>::type vboost_red;
// fill the source properties x,y,v = 0,1,4 with data
boost::fusion::at_c<p::x>(src.data) = 1.0;
boost::fusion::at_c<p::y>(src.data) = 2.0;
for (size_t i = 0 ; i < 3 ; i++)
boost::fusion::at_c<p::v>(src.data)[i] = i + 5.0;
// copy from src to dst
object_si_d<object<vboost>,object<vboost_red>,OBJ_NORMAL,0,1,4>(src,dst);
// Check the result
BOOST_REQUIRE_EQUAL(boost::fusion::at_c<0>(dst.data),1.0);
BOOST_REQUIRE_EQUAL(boost::fusion::at_c<1>(dst.data),2.0);
for (size_t i = 0 ; i < 3 ; i++)
BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(dst.data)[i],i + 5.0);
Test structure used for several test.
boost::fusion::vector< T, T, T, T, T[3], T[3][3]> type
declaration of what the Point_test store
It create a boost::fusion vector with the selected properties.
It copy the properties from one object to another.
This is a container to create a general object.

Create a compile-time Encap object and copy <em>from</em> the selected properties

v_point.resize(2);
v_point_red.resize(2);
v_point.template get<p::x>(0) = 1.0;
v_point.template get<p::y>(0) = 2.0;
for (size_t i = 0 ; i < 3 ; i++)
v_point.template get<p::v>(0)[i] = i + 5.0;
auto src_e = v_point.get(0);
auto dst_e = v_point_red.get(0);
BOOST_REQUIRE_EQUAL(v_point_red.get(0).template get<0>(),1.0);
BOOST_REQUIRE_EQUAL(v_point_red.get(0).template get<1>(),2.0);
for (size_t i = 0 ; i < 3 ; i++)
BOOST_REQUIRE_EQUAL(v_point_red.get(0).template get<2>()[i],i + 5.0);
Implementation of 1-D std::vector like structure.

Definition at line 268 of file object_si_d.hpp.

#include <object_si_d.hpp>

Public Member Functions

 object_si_d (const v_src &&vs, size_t sub_id, v_dst &&vd)
 
 object_si_d (const v_src &vs, size_t sub_id, v_dst &vd)
 

Constructor & Destructor Documentation

◆ object_si_d() [1/2]

template<typename v_src , typename v_dst , int... prp>
object_si_d< v_src, v_dst, OBJ_ENCAP_CHUNKING, prp... >::object_si_d ( const v_src &&  vs,
size_t  sub_id,
v_dst &&  vd 
)
inline

Definition at line 270 of file object_si_d.hpp.

◆ object_si_d() [2/2]

template<typename v_src , typename v_dst , int... prp>
object_si_d< v_src, v_dst, OBJ_ENCAP_CHUNKING, prp... >::object_si_d ( const v_src &  vs,
size_t  sub_id,
v_dst &  vd 
)
inline

Definition at line 276 of file object_si_d.hpp.


The documentation for this struct was generated from the following file: