OpenFPM_pdata  1.1.0
Project that contain the implementation of distributed structures
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Friends Pages
object_creator< v, prp > Struct Template Reference

It create a boost::fusion vector with the selected properties. More...

Detailed Description

template<typename v, int... prp>
struct object_creator< v, prp >

It create a boost::fusion vector with the selected properties.

Template Parameters
vboost::fusion::vector
prpselected properties

Create a compile-time object and copy from 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);

Create a compile-time Encap object and copy from 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);

Create a compile-time object and copy to the selected properties

util_test.hpp object write example

Create a compile-time Encap object and copy to the selected properties

util_test.hpp object write encap example

Definition at line 255 of file object_creator.hpp.

#include <object_creator.hpp>

Public Types

typedef
boost::fusion::result_of::as_vector
< typename object_creator_impl
< v, boost::mpl::vector
<>, prp... >::type >::type 
type
 

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