CMS 3D CMS Logo

Classes | Namespaces | Macros
SoAView.h File Reference
#include "SoACommon.h"

Go to the source code of this file.

Classes

struct  cms::soa::ConstValueTraits< C, COLUMN_TYPE >
 
struct  cms::soa::ConstValueTraits< C, SoAColumnType::scalar >
 

Namespaces

 cms::soa
 

Macros

#define _COLUMN_TYPE(LAYOUT_NAME, LAYOUT_MEMBER)   typename std::remove_pointer<decltype(BOOST_PP_CAT(LAYOUT_NAME, Type)()::LAYOUT_MEMBER())>::type
 
#define _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG(R, DATA, LAYOUT_MEMBER_NAME)   _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA)
 
#define _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::ConstType LOCAL_NAME)
 
#define _DECLARE_CONST_VIEW_SOA_MEMBER(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_CONST_VIEW_SOA_MEMBER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_CONST_VIEW_SOA_MEMBER_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::ConstType BOOST_PP_CAT(LOCAL_NAME, Parameters_);
 
#define _DECLARE_LAYOUT_LIST(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_LAYOUT_LIST_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_LAYOUT_LIST_IMPL(LAYOUT, NAME)   (NAME)
 
#define _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_CONST_ELEM_MEMBER_INIT_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   (BOOST_PP_CAT(LOCAL_NAME, _)(DATA, LOCAL_NAME))
 
#define _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR(R, DATA, LAYOUT_MEMBER_NAME)   _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR_IMPL LAYOUT_MEMBER_NAME
 
#define _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)   (BOOST_PP_CAT(LOCAL_NAME, Parameters_))
 
#define _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER(R, DATA, LAYOUT_MEMBER_NAME)   _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER_IMPL LAYOUT_MEMBER_NAME
 
#define _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS(R, DATA, LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::TupleOrPointerType LOCAL_NAME)
 
#define _DECLARE_VIEW_CONSTRUCTION_PARAMETERS(R, DATA, TYPE_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_CONSTRUCTION_PARAMETERS_IMPL BOOST_PP_TUPLE_PUSH_BACK(TYPE_NAME, DATA))
 
#define _DECLARE_VIEW_CONSTRUCTION_PARAMETERS_IMPL(LAYOUT_TYPE, LAYOUT_NAME, DATA)   (DATA LAYOUT_TYPE & LAYOUT_NAME)
 
#define _DECLARE_VIEW_ELEM_MEMBER_INIT(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_ELEM_MEMBER_INIT_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_ELEM_MEMBER_INIT_IMPL(LAYOUT, MEMBER, LOCAL_NAME, DATA)   (LOCAL_NAME(DATA, LOCAL_NAME))
 
#define _DECLARE_VIEW_ELEMENT_CONSTR_CALL(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_ELEMENT_CONSTR_CALL_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_ELEMENT_CONSTR_CALL_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)   (const_cast_SoAParametersImpl(base_type::BOOST_PP_CAT(LOCAL_NAME, Parameters_)))
 
#define _DECLARE_VIEW_ELEMENT_VALUE_ARG(R, DATA, LAYOUT_MEMBER_NAME)   _DECLARE_VIEW_ELEMENT_VALUE_ARG_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA)
 
#define _DECLARE_VIEW_ELEMENT_VALUE_ARG_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME) LOCAL_NAME)
 
#define _DECLARE_VIEW_ELEMENT_VALUE_COPY(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_ELEMENT_VALUE_COPY_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_ELEMENT_VALUE_COPY_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_ELEMENT_VALUE_MEMBER(R, DATA, LAYOUT_MEMBER_NAME)   _DECLARE_VIEW_ELEMENT_VALUE_MEMBER_IMPL LAYOUT_MEMBER_NAME
 
#define _DECLARE_VIEW_ELEMENT_VALUE_MEMBER_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE(R, DATA, TYPE_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE_IMPL TYPE_NAME)
 
#define _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE_IMPL(TYPE, NAME)
 
#define _DECLARE_VIEW_LAYOUT_TYPE_ALIAS(R, DATA, TYPE_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_LAYOUT_TYPE_ALIAS_IMPL TYPE_NAME)
 
#define _DECLARE_VIEW_LAYOUT_TYPE_ALIAS_IMPL(TYPE, NAME)   using BOOST_PP_CAT(TypeOf_, NAME) = TYPE;
 
#define _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER_IMPL(LAYOUT, MEMBER, LOCAL_NAME, DATA)   BOOST_PP_CAT(MEMBER, Parameters_) = DATA.BOOST_PP_CAT(MEMBER, Parameters_);
 
#define _DECLARE_VIEW_MEMBER_CONST_POINTERS(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_CONST_POINTERS_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_MEMBER_CONST_POINTERS_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN_IMPL(LAYOUT, MEMBER, NAME)
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER_IMPL(LAYOUT, MEMBER, LOCAL_NAME, DATA)   (BOOST_PP_CAT(MEMBER, Parameters_){DATA.BOOST_PP_CAT(MEMBER, Parameters_)})
 
#define _DECLARE_VIEW_MEMBER_INITIALIZERS_IMPL(LAYOUT, MEMBER, NAME)
 
#define _DECLARE_VIEW_MEMBER_LIST(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_LIST_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_MEMBER_LIST_IMPL(LAYOUT, MEMBER, NAME)   (NAME)
 
#define _DECLARE_VIEW_MEMBER_POINTERS(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_POINTERS_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_MEMBER_POINTERS_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_MEMBER_TYPE_ALIAS(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_TYPE_ALIAS_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_MEMBER_TYPE_ALIAS_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, CAST)
 
#define _DECLARE_VIEW_SOA_ACCESSOR(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_ACCESSOR_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_SOA_ACCESSOR_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_SOA_CONST_ACCESSOR(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_CONST_ACCESSOR_IMPL LAYOUT_MEMBER_NAME)
 
#define _DECLARE_VIEW_SOA_CONST_ACCESSOR_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 
#define _DECLARE_VIEW_SOA_MEMBER(R, DATA, LAYOUT_MEMBER_NAME)   BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_MEMBER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
 
#define _DECLARE_VIEW_SOA_MEMBER_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)   typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME) BOOST_PP_CAT(LOCAL_NAME, Parameters_);
 
#define _GENERATE_SOA_CONST_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_CONST_VIEW_PART_0(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_CONST_VIEW_PART_0_NO_DEFAULTS(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_CONST_VIEW_PART_1(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_TRIVIAL_CONST_VIEW(CLASS, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_TRIVIAL_VIEW(CLASS, LAYOUTS_LIST, VALUE_LIST, ...)
 
#define _GENERATE_SOA_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_VIEW_PART_0(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_VIEW_PART_0_NO_DEFAULTS(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_VIEW_PART_1(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _GENERATE_SOA_VIEW_PART_2(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT(R, DATA, TYPE_NAME)   _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT_IMPL TYPE_NAME
 
#define _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT_IMPL(VALUE_TYPE, CPP_TYPE, NAME)
 
#define _UPDATE_SIZE_OF_VIEW(R, DATA, TYPE_NAME)   BOOST_PP_EXPAND(_UPDATE_SIZE_OF_VIEW_IMPL TYPE_NAME)
 
#define _UPDATE_SIZE_OF_VIEW_IMPL(LAYOUT_TYPE, LAYOUT_NAME)
 
#define _VIEW_FIELD_FROM_LAYOUT(R, DATA, VALUE_TYPE_NAME)   BOOST_PP_EXPAND((_VIEW_FIELD_FROM_LAYOUT_IMPL BOOST_PP_TUPLE_PUSH_BACK(VALUE_TYPE_NAME, DATA)))
 
#define _VIEW_FIELD_FROM_LAYOUT_IMPL(VALUE_TYPE, CPP_TYPE, NAME, DATA)   (DATA, NAME, NAME)
 
#define GENERATE_SOA_CONST_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define GENERATE_SOA_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
 
#define SOA_VIEW_LAYOUT(TYPE, NAME)   (TYPE, NAME)
 
#define SOA_VIEW_LAYOUT_LIST(...)   __VA_ARGS__
 
#define SOA_VIEW_VALUE(LAYOUT_NAME, LAYOUT_MEMBER)   (LAYOUT_NAME, LAYOUT_MEMBER, LAYOUT_MEMBER)
 
#define SOA_VIEW_VALUE_LIST(...)   __VA_ARGS__
 
#define SOA_VIEW_VALUE_RENAME(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)   (LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)
 

Macro Definition Documentation

◆ _COLUMN_TYPE

#define _COLUMN_TYPE (   LAYOUT_NAME,
  LAYOUT_MEMBER 
)    typename std::remove_pointer<decltype(BOOST_PP_CAT(LAYOUT_NAME, Type)()::LAYOUT_MEMBER())>::type

Helper macro extracting the data type from metadata of a layout or view

Definition at line 263 of file SoAView.h.

◆ _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG

#define _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA)

Definition at line 281 of file SoAView.h.

◆ _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG_IMPL

#define _DECLARE_CONST_VIEW_ELEMENT_VALUE_ARG_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::ConstType LOCAL_NAME)

Generator of parameters for (const) element subclass (expanded comma separated).

Definition at line 278 of file SoAView.h.

◆ _DECLARE_CONST_VIEW_SOA_MEMBER

#define _DECLARE_CONST_VIEW_SOA_MEMBER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_CONST_VIEW_SOA_MEMBER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 459 of file SoAView.h.

◆ _DECLARE_CONST_VIEW_SOA_MEMBER_IMPL

#define _DECLARE_CONST_VIEW_SOA_MEMBER_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::ConstType BOOST_PP_CAT(LOCAL_NAME, Parameters_);

Const SoA class member declaration (column pointers and parameters).

Definition at line 456 of file SoAView.h.

◆ _DECLARE_LAYOUT_LIST

#define _DECLARE_LAYOUT_LIST (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_LAYOUT_LIST_IMPL LAYOUT_MEMBER_NAME)

Definition at line 224 of file SoAView.h.

◆ _DECLARE_LAYOUT_LIST_IMPL

#define _DECLARE_LAYOUT_LIST_IMPL (   LAYOUT,
  NAME 
)    (NAME)

Generator of layout list.

Definition at line 222 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT

#define _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_CONST_ELEM_MEMBER_INIT_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 291 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT_IMPL

#define _DECLARE_VIEW_CONST_ELEM_MEMBER_INIT_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    (BOOST_PP_CAT(LOCAL_NAME, _)(DATA, LOCAL_NAME))

Generator of member initialization for constructor of element subclass

Definition at line 287 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR

#define _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR_IMPL LAYOUT_MEMBER_NAME

Definition at line 307 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR_IMPL

#define _DECLARE_VIEW_CONST_ELEMENT_ACCESSOR_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
SOA_HOST_DEVICE SOA_INLINE \
const typename SoAConstValueWithConf<BOOST_PP_CAT(Metadata::ColumnTypeOf_, LOCAL_NAME), \
const typename BOOST_PP_CAT(Metadata::TypeOf_, LOCAL_NAME)>::RefToConst \
LOCAL_NAME() const { \
return BOOST_PP_CAT(LOCAL_NAME, _)(); \
}
#define SOA_HOST_DEVICE
Definition: SoACommon.h:27

Declaration of the members accessors of the const element subclass

Definition at line 298 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL

#define _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL_IMPL LAYOUT_MEMBER_NAME)

Definition at line 353 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL_IMPL

#define _DECLARE_VIEW_CONST_ELEMENT_CONSTR_CALL_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)    (BOOST_PP_CAT(LOCAL_NAME, Parameters_))

Parameters passed to const element subclass constructor in operator[]

Definition at line 350 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER

#define _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER_IMPL LAYOUT_MEMBER_NAME

Definition at line 321 of file SoAView.h.

◆ _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER_IMPL

#define _DECLARE_VIEW_CONST_ELEMENT_VALUE_MEMBER_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
const cms::soa::ConstValueTraits<SoAConstValueWithConf<BOOST_PP_CAT(Metadata::ColumnTypeOf_, LOCAL_NAME), \
typename BOOST_PP_CAT(Metadata::TypeOf_, LOCAL_NAME)>, \
BOOST_PP_CAT(Metadata::ColumnTypeOf_, LOCAL_NAME)> \
BOOST_PP_CAT(LOCAL_NAME, _);

Declaration of the private members of the const element subclass

Definition at line 314 of file SoAView.h.

◆ _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS

#define _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)
Value:
BOOST_PP_EXPAND( \
_DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))
#define _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS_IMPL(LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME, DATA)
Definition: SoAView.h:158

Definition at line 161 of file SoAView.h.

◆ _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS_IMPL

#define _DECLARE_VIEW_CONSTRUCTION_BYCOLUMN_PARAMETERS_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME)::TupleOrPointerType LOCAL_NAME)

Generator of parameters for constructor by column.

Definition at line 158 of file SoAView.h.

◆ _DECLARE_VIEW_CONSTRUCTION_PARAMETERS

#define _DECLARE_VIEW_CONSTRUCTION_PARAMETERS (   R,
  DATA,
  TYPE_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_CONSTRUCTION_PARAMETERS_IMPL BOOST_PP_TUPLE_PUSH_BACK(TYPE_NAME, DATA))

Definition at line 152 of file SoAView.h.

◆ _DECLARE_VIEW_CONSTRUCTION_PARAMETERS_IMPL

#define _DECLARE_VIEW_CONSTRUCTION_PARAMETERS_IMPL (   LAYOUT_TYPE,
  LAYOUT_NAME,
  DATA 
)    (DATA LAYOUT_TYPE & LAYOUT_NAME)

Generator of parameters (layouts/views) for constructor by layouts/views.

Definition at line 150 of file SoAView.h.

◆ _DECLARE_VIEW_ELEM_MEMBER_INIT

#define _DECLARE_VIEW_ELEM_MEMBER_INIT (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_ELEM_MEMBER_INIT_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 257 of file SoAView.h.

◆ _DECLARE_VIEW_ELEM_MEMBER_INIT_IMPL

#define _DECLARE_VIEW_ELEM_MEMBER_INIT_IMPL (   LAYOUT,
  MEMBER,
  LOCAL_NAME,
  DATA 
)    (LOCAL_NAME(DATA, LOCAL_NAME))

Generator of element members initializer.

Definition at line 255 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_CONSTR_CALL

#define _DECLARE_VIEW_ELEMENT_CONSTR_CALL (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_ELEMENT_CONSTR_CALL_IMPL LAYOUT_MEMBER_NAME)

Definition at line 365 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_CONSTR_CALL_IMPL

#define _DECLARE_VIEW_ELEMENT_CONSTR_CALL_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)    (const_cast_SoAParametersImpl(base_type::BOOST_PP_CAT(LOCAL_NAME, Parameters_)))

Parameters passed to element subclass constructor in operator[]

The use of const_cast (inside const_cast_SoAParametersImpl) is safe because the constructor of a View binds only to non-const arguments.

Definition at line 362 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_ARG

#define _DECLARE_VIEW_ELEMENT_VALUE_ARG (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    _DECLARE_VIEW_ELEMENT_VALUE_ARG_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA)

Definition at line 272 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_ARG_IMPL

#define _DECLARE_VIEW_ELEMENT_VALUE_ARG_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    (DATA typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME) LOCAL_NAME)

Generator of parameters for (non-const) element subclass (expanded comma separated).

Definition at line 269 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_COPY

#define _DECLARE_VIEW_ELEMENT_VALUE_COPY (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_ELEMENT_VALUE_COPY_IMPL LAYOUT_MEMBER_NAME)

Definition at line 331 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_COPY_IMPL

#define _DECLARE_VIEW_ELEMENT_VALUE_COPY_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
if constexpr (Metadata::BOOST_PP_CAT(ColumnTypeOf_, LOCAL_NAME) != cms::soa::SoAColumnType::scalar) \
LOCAL_NAME() = _soa_impl_other.LOCAL_NAME();

Generator of the member-by-member copy operator of the element subclass.

Definition at line 327 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_MEMBER

#define _DECLARE_VIEW_ELEMENT_VALUE_MEMBER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    _DECLARE_VIEW_ELEMENT_VALUE_MEMBER_IMPL LAYOUT_MEMBER_NAME

Definition at line 344 of file SoAView.h.

◆ _DECLARE_VIEW_ELEMENT_VALUE_MEMBER_IMPL

#define _DECLARE_VIEW_ELEMENT_VALUE_MEMBER_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
SoAValueWithConf<BOOST_PP_CAT(Metadata::ColumnTypeOf_, LOCAL_NAME), \
typename BOOST_PP_CAT(Metadata::TypeOf_, LOCAL_NAME)> \
LOCAL_NAME;

Declaration of the private members of the const element subclass

Definition at line 338 of file SoAView.h.

◆ _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE

#define _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE (   R,
  DATA,
  TYPE_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE_IMPL TYPE_NAME)

Definition at line 73 of file SoAView.h.

◆ _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE_IMPL

#define _DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE_IMPL (   TYPE,
  NAME 
)
Value:
(using BOOST_PP_CAT(TYPE, _default) = BOOST_PP_CAT(TYPE, _StagedTemplates) < VIEW_ALIGNMENT, \
VIEW_ALIGNMENT_ENFORCEMENT > ;)

Layout templates parametrization

Definition at line 69 of file SoAView.h.

◆ _DECLARE_VIEW_LAYOUT_TYPE_ALIAS

#define _DECLARE_VIEW_LAYOUT_TYPE_ALIAS (   R,
  DATA,
  TYPE_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_LAYOUT_TYPE_ALIAS_IMPL TYPE_NAME)

Definition at line 81 of file SoAView.h.

◆ _DECLARE_VIEW_LAYOUT_TYPE_ALIAS_IMPL

#define _DECLARE_VIEW_LAYOUT_TYPE_ALIAS_IMPL (   TYPE,
  NAME 
)    using BOOST_PP_CAT(TypeOf_, NAME) = TYPE;

Layout types aliasing for referencing by name

Definition at line 79 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER

#define _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 249 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER_IMPL

#define _DECLARE_VIEW_MEMBER_ASSIGNMENT_FROM_OTHER_IMPL (   LAYOUT,
  MEMBER,
  LOCAL_NAME,
  DATA 
)    BOOST_PP_CAT(MEMBER, Parameters_) = DATA.BOOST_PP_CAT(MEMBER, Parameters_);

Generator of member assignment for assignment operator.

Definition at line 246 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_CONST_POINTERS

#define _DECLARE_VIEW_MEMBER_CONST_POINTERS (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_CONST_POINTERS_IMPL LAYOUT_MEMBER_NAME)

Definition at line 144 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_CONST_POINTERS_IMPL

#define _DECLARE_VIEW_MEMBER_CONST_POINTERS_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
SOA_HOST_DEVICE SOA_INLINE auto const* BOOST_PP_CAT(addressOf_, LOCAL_NAME)() const { \
return BOOST_PP_CAT(parametersOf_, LOCAL_NAME)().addr_; \
};
#define SOA_INLINE
Definition: SoACommon.h:28
#define SOA_HOST_DEVICE
Definition: SoACommon.h:27

Member type const pointers for referencing by name

Definition at line 138 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS

#define _DECLARE_VIEW_MEMBER_INITIALIZERS (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_IMPL LAYOUT_MEMBER_NAME)

Definition at line 180 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN

#define _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN_IMPL LAYOUT_MEMBER_NAME)

Definition at line 216 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN_IMPL

#define _DECLARE_VIEW_MEMBER_INITIALIZERS_BYCOLUMN_IMPL (   LAYOUT,
  MEMBER,
  NAME 
)
Value:
( \
BOOST_PP_CAT(NAME, Parameters_)([&]() -> auto { \
if constexpr (alignmentEnforcement == AlignmentEnforcement::enforced) \
if (Metadata:: BOOST_PP_CAT(ParametersTypeOf_, NAME)::checkAlignment(NAME, alignment)) \
throw std::runtime_error("In constructor by column: misaligned column: " #NAME); \
return NAME; \
}()) \
)

Generator of member initialization from constructor. We use a lambda with auto return type to handle multiple possible return types.

Definition at line 205 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER

#define _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 240 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER_IMPL

#define _DECLARE_VIEW_MEMBER_INITIALIZERS_FROM_OTHER_IMPL (   LAYOUT,
  MEMBER,
  LOCAL_NAME,
  DATA 
)    (BOOST_PP_CAT(MEMBER, Parameters_){DATA.BOOST_PP_CAT(MEMBER, Parameters_)})

Generator of member initializer for copy constructor.

Definition at line 237 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_INITIALIZERS_IMPL

#define _DECLARE_VIEW_MEMBER_INITIALIZERS_IMPL (   LAYOUT,
  MEMBER,
  NAME 
)
Value:
(BOOST_PP_CAT(NAME, Parameters_)([&]() -> auto { \
auto params = LAYOUT.metadata().BOOST_PP_CAT(parametersOf_, MEMBER)(); \
if constexpr (alignmentEnforcement == AlignmentEnforcement::enforced) \
if (reinterpret_cast<intptr_t>(params.addr_) % alignment) \
throw std::runtime_error("In constructor by layout: misaligned column: " #NAME); \
return params; \
}()))

Generator of member initialization from constructor. We use a lambda with auto return type to handle multiple possible return types.

Definition at line 170 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_LIST

#define _DECLARE_VIEW_MEMBER_LIST (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_LIST_IMPL LAYOUT_MEMBER_NAME)

Definition at line 231 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_LIST_IMPL

#define _DECLARE_VIEW_MEMBER_LIST_IMPL (   LAYOUT,
  MEMBER,
  NAME 
)    (NAME)

Generator of view member list.

Definition at line 229 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_POINTERS

#define _DECLARE_VIEW_MEMBER_POINTERS (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_POINTERS_IMPL LAYOUT_MEMBER_NAME)

Definition at line 131 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_POINTERS_IMPL

#define _DECLARE_VIEW_MEMBER_POINTERS_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
SOA_HOST_DEVICE SOA_INLINE auto* BOOST_PP_CAT(addressOf_, LOCAL_NAME)() { \
return BOOST_PP_CAT(parametersOf_, LOCAL_NAME)().addr_; \
};
#define SOA_INLINE
Definition: SoACommon.h:28
#define SOA_HOST_DEVICE
Definition: SoACommon.h:27

Member type pointers for referencing by name

Definition at line 125 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_TYPE_ALIAS

#define _DECLARE_VIEW_MEMBER_TYPE_ALIAS (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_MEMBER_TYPE_ALIAS_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 118 of file SoAView.h.

◆ _DECLARE_VIEW_MEMBER_TYPE_ALIAS_IMPL

#define _DECLARE_VIEW_MEMBER_TYPE_ALIAS_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  CAST 
)
Value:
using BOOST_PP_CAT(TypeOf_, LOCAL_NAME) = \
typename BOOST_PP_CAT(TypeOf_, LAYOUT_NAME)::Metadata::BOOST_PP_CAT(TypeOf_, LAYOUT_MEMBER); \
using BOOST_PP_CAT(ParametersTypeOf_, LOCAL_NAME) = \
typename BOOST_PP_CAT(TypeOf_, LAYOUT_NAME)::Metadata::BOOST_PP_CAT(ParametersTypeOf_, LAYOUT_MEMBER); \
constexpr static cms::soa::SoAColumnType BOOST_PP_CAT(ColumnTypeOf_, LOCAL_NAME) = \
BOOST_PP_CAT(TypeOf_, LAYOUT_NAME)::Metadata::BOOST_PP_CAT(ColumnTypeOf_, LAYOUT_MEMBER); \
using BOOST_PP_CAT(ConstAccessorOf_, LOCAL_NAME) = \
cms::soa::SoAAccessType::constAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify> ; \
using BOOST_PP_CAT(MutableAccessorOf_, LOCAL_NAME) = \
cms::soa::SoAAccessType::mutableAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify> ; \
SOA_HOST_DEVICE SOA_INLINE \
const auto BOOST_PP_CAT(parametersOf_, LOCAL_NAME)() const { \
return CAST(parent_.BOOST_PP_CAT(LOCAL_NAME, Parameters_)); \
};
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
SoAColumnType
Definition: SoACommon.h:64

Member types aliasing for referencing by name

Definition at line 88 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_ACCESSOR

#define _DECLARE_VIEW_SOA_ACCESSOR (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_ACCESSOR_IMPL LAYOUT_MEMBER_NAME)

Definition at line 404 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_ACCESSOR_IMPL

#define _DECLARE_VIEW_SOA_ACCESSOR_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
/* Column or scalar */ \
SOA_HOST_DEVICE SOA_INLINE \
cms::soa::SoAAccessType::mutableAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>::NoParamReturnType \
LOCAL_NAME() { \
cms::soa::SoAAccessType::mutableAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>(const_cast_SoAParametersImpl( \
base_type:: BOOST_PP_CAT(LOCAL_NAME, Parameters_)))(); \
} \
SOA_HOST_DEVICE SOA_INLINE \
cms::soa::SoAAccessType::mutableAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>::ParamReturnType \
LOCAL_NAME(size_type _soa_impl_index) { \
if constexpr (rangeChecking == cms::soa::RangeChecking::enabled) { \
if (_soa_impl_index >= base_type::elements_) \
SOA_THROW_OUT_OF_RANGE("Out of range index in mutable " #LOCAL_NAME "(size_type index)") \
} \
cms::soa::SoAAccessType::mutableAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>(const_cast_SoAParametersImpl( \
base_type:: BOOST_PP_CAT(LOCAL_NAME, Parameters_)))(_soa_impl_index); \
}
constexpr bool enabled
Definition: SoACommon.h:77
uint16_t size_type
T const_cast_SoAParametersImpl(SoAConstParametersImpl< COLUMN_TYPE, T > const &o)
Definition: SoACommon.h:259
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521

Direct access to column pointer and indexed access

Definition at line 372 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_CONST_ACCESSOR

#define _DECLARE_VIEW_SOA_CONST_ACCESSOR (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_CONST_ACCESSOR_IMPL LAYOUT_MEMBER_NAME)

Definition at line 441 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_CONST_ACCESSOR_IMPL

#define _DECLARE_VIEW_SOA_CONST_ACCESSOR_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)
Value:
/* Column or scalar */ \
SOA_HOST_DEVICE SOA_INLINE \
cms::soa::SoAAccessType::constAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>::NoParamReturnType \
LOCAL_NAME() const { \
cms::soa::SoAAccessType::constAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>(BOOST_PP_CAT(LOCAL_NAME, Parameters_))(); \
} \
SOA_HOST_DEVICE SOA_INLINE \
cms::soa::SoAAccessType::constAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>::ParamReturnType \
LOCAL_NAME(size_type _soa_impl_index) const { \
if constexpr (rangeChecking == cms::soa::RangeChecking::enabled) { \
if (_soa_impl_index >= elements_) \
SOA_THROW_OUT_OF_RANGE("Out of range index in const " #LOCAL_NAME "(size_type index)") \
} \
cms::soa::SoAAccessType::constAccess>::template Alignment<conditionalAlignment>:: \
template RestrictQualifier<restrictQualify>(BOOST_PP_CAT(LOCAL_NAME, Parameters_))(_soa_impl_index); \
}
constexpr bool enabled
Definition: SoACommon.h:77
uint16_t size_type
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521

Direct access to column pointer (const) and indexed access.

Definition at line 411 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_MEMBER

#define _DECLARE_VIEW_SOA_MEMBER (   R,
  DATA,
  LAYOUT_MEMBER_NAME 
)    BOOST_PP_EXPAND(_DECLARE_VIEW_SOA_MEMBER_IMPL BOOST_PP_TUPLE_PUSH_BACK(LAYOUT_MEMBER_NAME, DATA))

Definition at line 450 of file SoAView.h.

◆ _DECLARE_VIEW_SOA_MEMBER_IMPL

#define _DECLARE_VIEW_SOA_MEMBER_IMPL (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME,
  DATA 
)    typename BOOST_PP_CAT(Metadata::ParametersTypeOf_, LOCAL_NAME) BOOST_PP_CAT(LOCAL_NAME, Parameters_);

SoA class member declaration (column pointers and parameters).

Definition at line 447 of file SoAView.h.

◆ _GENERATE_SOA_CONST_VIEW

#define _GENERATE_SOA_CONST_VIEW (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
_GENERATE_SOA_CONST_VIEW_PART_1(CONST_VIEW, VIEW, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define _GENERATE_SOA_CONST_VIEW_PART_0(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:642

Definition at line 787 of file SoAView.h.

◆ _GENERATE_SOA_CONST_VIEW_PART_0

#define _GENERATE_SOA_CONST_VIEW_PART_0 (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
bool VIEW_ALIGNMENT_ENFORCEMENT = cms::soa::AlignmentEnforcement::relaxed, \
bool RESTRICT_QUALIFY = cms::soa::RestrictQualify::enabled, \
bool RANGE_CHECKING = cms::soa::RangeChecking::disabled> \
struct CONST_VIEW { \
/* these could be moved to an external type trait to free up the symbol names */ \
using self_type = CONST_VIEW;
constexpr bool enabled
Definition: SoACommon.h:71
static constexpr byte_size_type defaultSize
Definition: SoACommon.h:710
static constexpr bool relaxed
Definition: SoACommon.h:701
#define CMS_SOA_BYTE_SIZE_TYPE
Definition: SoACommon.h:55
constexpr bool disabled
Definition: SoACommon.h:78

Definition at line 642 of file SoAView.h.

◆ _GENERATE_SOA_CONST_VIEW_PART_0_NO_DEFAULTS

#define _GENERATE_SOA_CONST_VIEW_PART_0_NO_DEFAULTS (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
template <CMS_SOA_BYTE_SIZE_TYPE VIEW_ALIGNMENT, \
bool VIEW_ALIGNMENT_ENFORCEMENT, \
bool RESTRICT_QUALIFY, \
bool RANGE_CHECKING> \
struct CONST_VIEW { \
/* these could be moved to an external type trait to free up the symbol names */ \
using self_type = CONST_VIEW;
#define CMS_SOA_BYTE_SIZE_TYPE
Definition: SoACommon.h:55

Definition at line 653 of file SoAView.h.

◆ _GENERATE_SOA_CONST_VIEW_PART_1

#define _GENERATE_SOA_CONST_VIEW_PART_1 (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)

Split of the const view definition where the parametrized template alias for the layout is defined for layout trivial view.

Definition at line 668 of file SoAView.h.

◆ _GENERATE_SOA_TRIVIAL_CONST_VIEW

#define _GENERATE_SOA_TRIVIAL_CONST_VIEW (   CLASS,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
_GENERATE_SOA_CONST_VIEW_PART_0_NO_DEFAULTS(ConstViewTemplateFreeParams, ViewTemplateFreeParams, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
using BOOST_PP_CAT(CLASS, _parametrized) = CLASS<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT>; \
_GENERATE_SOA_CONST_VIEW_PART_1(ConstViewTemplateFreeParams, ViewTemplateFreeParams, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define _GENERATE_SOA_CONST_VIEW_PART_0_NO_DEFAULTS(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:653

Definition at line 797 of file SoAView.h.

◆ _GENERATE_SOA_TRIVIAL_VIEW

#define _GENERATE_SOA_TRIVIAL_VIEW (   CLASS,
  LAYOUTS_LIST,
  VALUE_LIST,
  ... 
)
Value:
_GENERATE_SOA_VIEW_PART_0_NO_DEFAULTS(ConstViewTemplateFreeParams, ViewTemplateFreeParams, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
using BOOST_PP_CAT(CLASS, _parametrized) = CLASS<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT>; \
_GENERATE_SOA_VIEW_PART_1(ConstViewTemplateFreeParams, ViewTemplateFreeParams, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
\
/* Extra operator=() for mutable element to emulate the aggregate initialisation syntax */ \
SOA_HOST_DEVICE SOA_INLINE constexpr element & operator=(const typename \
BOOST_PP_CAT(CLASS, _parametrized)::Metadata::value_element _soa_impl_value) { \
_ITERATE_ON_ALL(_TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT, ~, __VA_ARGS__) \
return *this; \
} \
_GENERATE_SOA_VIEW_PART_2(ConstViewTemplateFreeParams, ViewTemplateFreeParams, \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
Basic3DVector & operator=(const Basic3DVector &)=default
Assignment operator.
#define _GENERATE_SOA_VIEW_PART_0_NO_DEFAULTS(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:497
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define SOA_INLINE
Definition: SoACommon.h:28
#define _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT(R, DATA, TYPE_NAME)
Definition: SoAView.h:479
#define _GENERATE_SOA_VIEW_PART_2(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:616

Definition at line 813 of file SoAView.h.

◆ _GENERATE_SOA_VIEW

#define _GENERATE_SOA_VIEW (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
_GENERATE_SOA_VIEW_PART_0(CONST_VIEW, VIEW, SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
_GENERATE_SOA_VIEW_PART_1(CONST_VIEW, VIEW, SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
_GENERATE_SOA_VIEW_PART_2(CONST_VIEW, VIEW, SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define _GENERATE_SOA_VIEW_PART_0(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:483

Definition at line 804 of file SoAView.h.

◆ _GENERATE_SOA_VIEW_PART_0

#define _GENERATE_SOA_VIEW_PART_0 (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
bool VIEW_ALIGNMENT_ENFORCEMENT = cms::soa::AlignmentEnforcement::relaxed, \
bool RESTRICT_QUALIFY = cms::soa::RestrictQualify::enabled, \
bool RANGE_CHECKING = cms::soa::RangeChecking::disabled> \
struct VIEW : public CONST_VIEW<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT, RESTRICT_QUALIFY, RANGE_CHECKING> { \
/* Declare the parametrized layouts as the default */ \
/*BOOST_PP_SEQ_CAT(_ITERATE_ON_ALL(_DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE, ~, LAYOUTS_LIST)) */ \
/* these could be moved to an external type trait to free up the symbol names */ \
using self_type = VIEW; \
using base_type = CONST_VIEW<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT, RESTRICT_QUALIFY, RANGE_CHECKING>;
constexpr bool enabled
Definition: SoACommon.h:71
static constexpr byte_size_type defaultSize
Definition: SoACommon.h:710
static constexpr bool relaxed
Definition: SoACommon.h:701
#define CMS_SOA_BYTE_SIZE_TYPE
Definition: SoACommon.h:55
constexpr bool disabled
Definition: SoACommon.h:78

Definition at line 483 of file SoAView.h.

◆ _GENERATE_SOA_VIEW_PART_0_NO_DEFAULTS

#define _GENERATE_SOA_VIEW_PART_0_NO_DEFAULTS (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
template <CMS_SOA_BYTE_SIZE_TYPE VIEW_ALIGNMENT, \
bool VIEW_ALIGNMENT_ENFORCEMENT, \
bool RESTRICT_QUALIFY, \
bool RANGE_CHECKING> \
struct VIEW : public CONST_VIEW<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT, RESTRICT_QUALIFY, RANGE_CHECKING> { \
/* Declare the parametrized layouts as the default */ \
/*BOOST_PP_SEQ_CAT(_ITERATE_ON_ALL(_DECLARE_VIEW_LAYOUT_PARAMETRIZED_TEMPLATE, ~, LAYOUTS_LIST)) */ \
/* these could be moved to an external type trait to free up the symbol names */ \
using self_type = VIEW; \
using base_type = CONST_VIEW<VIEW_ALIGNMENT, VIEW_ALIGNMENT_ENFORCEMENT, RESTRICT_QUALIFY, RANGE_CHECKING>;
#define CMS_SOA_BYTE_SIZE_TYPE
Definition: SoACommon.h:55

Definition at line 497 of file SoAView.h.

◆ _GENERATE_SOA_VIEW_PART_1

#define _GENERATE_SOA_VIEW_PART_1 (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)

Split of the const view definition where the parametrized template alias for the layout is defined for layout trivial view.

Definition at line 515 of file SoAView.h.

◆ _GENERATE_SOA_VIEW_PART_2

#define _GENERATE_SOA_VIEW_PART_2 (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
}; \
\
SOA_HOST_DEVICE SOA_INLINE \
element operator[](size_type _soa_impl_index) { \
if constexpr (rangeChecking == cms::soa::RangeChecking::enabled) { \
if (_soa_impl_index >= base_type::elements_) \
SOA_THROW_OUT_OF_RANGE("Out of range index in " #VIEW "::operator[]") \
} \
return element{_soa_impl_index, _ITERATE_ON_ALL_COMMA(_DECLARE_VIEW_ELEMENT_CONSTR_CALL, ~, VALUE_LIST)}; \
} \
\
/* inherit const accessors from ConstView */ \
\
/* non-const accessors */ \
_ITERATE_ON_ALL(_DECLARE_VIEW_SOA_ACCESSOR, ~, VALUE_LIST) \
\
/* dump the SoA internal structure */ \
template <typename T> \
SOA_HOST_ONLY friend void dump(); \
};
constexpr bool enabled
Definition: SoACommon.h:77
#define _ITERATE_ON_ALL(MACRO, DATA,...)
Definition: SoACommon.h:562
uint16_t size_type
#define _DECLARE_VIEW_SOA_ACCESSOR(R, DATA, LAYOUT_MEMBER_NAME)
Definition: SoAView.h:404
#define _ITERATE_ON_ALL_COMMA(MACRO, DATA,...)
Definition: SoACommon.h:558
#define _DECLARE_VIEW_ELEMENT_VALUE_MEMBER(R, DATA, LAYOUT_MEMBER_NAME)
Definition: SoAView.h:344
#define _DECLARE_VIEW_ELEMENT_CONSTR_CALL(R, DATA, LAYOUT_MEMBER_NAME)
Definition: SoAView.h:365
T operator[](int i) const

Definition at line 616 of file SoAView.h.

◆ _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT

#define _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT (   R,
  DATA,
  TYPE_NAME 
)    _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT_IMPL TYPE_NAME

Definition at line 479 of file SoAView.h.

◆ _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT_IMPL

#define _TRIVIAL_VIEW_ASSIGN_VALUE_ELEMENT_IMPL (   VALUE_TYPE,
  CPP_TYPE,
  NAME 
)
Value:
_SWITCH_ON_TYPE(VALUE_TYPE, \
/* Scalar (empty) */ \
, \
/* Column */ \
NAME() = _soa_impl_value.NAME; \
, \
/* Eigen column */ \
NAME() = _soa_impl_value.NAME; \
)
#define _SWITCH_ON_TYPE(VALUE_TYPE, IF_SCALAR, IF_COLUMN, IF_EIGEN_COLUMN)
Definition: SoACommon.h:565

Assign the value of the view from the values in the value_element.

Definition at line 467 of file SoAView.h.

◆ _UPDATE_SIZE_OF_VIEW

#define _UPDATE_SIZE_OF_VIEW (   R,
  DATA,
  TYPE_NAME 
)    BOOST_PP_EXPAND(_UPDATE_SIZE_OF_VIEW_IMPL TYPE_NAME)

Definition at line 198 of file SoAView.h.

◆ _UPDATE_SIZE_OF_VIEW_IMPL

#define _UPDATE_SIZE_OF_VIEW_IMPL (   LAYOUT_TYPE,
  LAYOUT_NAME 
)
Value:
if (set) { \
if (ret != LAYOUT_NAME.metadata().size()) \
throw std::runtime_error("In constructor by layout: different sizes from layouts."); \
} else { \
ret = LAYOUT_NAME.metadata().size(); \
set = true; \
}
ret
prodAgent to be discontinued

Generator of size computation for constructor. This is the per-layout part of the lambda checking they all have the same size.

Definition at line 188 of file SoAView.h.

◆ _VIEW_FIELD_FROM_LAYOUT

#define _VIEW_FIELD_FROM_LAYOUT (   R,
  DATA,
  VALUE_TYPE_NAME 
)    BOOST_PP_EXPAND((_VIEW_FIELD_FROM_LAYOUT_IMPL BOOST_PP_TUPLE_PUSH_BACK(VALUE_TYPE_NAME, DATA)))

Definition at line 836 of file SoAView.h.

◆ _VIEW_FIELD_FROM_LAYOUT_IMPL

#define _VIEW_FIELD_FROM_LAYOUT_IMPL (   VALUE_TYPE,
  CPP_TYPE,
  NAME,
  DATA 
)    (DATA, NAME, NAME)

Helper macro turning layout field declaration into view field declaration.

Definition at line 834 of file SoAView.h.

◆ GENERATE_SOA_CONST_VIEW

#define GENERATE_SOA_CONST_VIEW (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
_GENERATE_SOA_CONST_VIEW(CONST_VIEW, BOOST_PP_CAT(CONST_VIEW, Unused_), \
SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define _GENERATE_SOA_CONST_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:787

Definition at line 793 of file SoAView.h.

◆ GENERATE_SOA_VIEW

#define GENERATE_SOA_VIEW (   CONST_VIEW,
  VIEW,
  LAYOUTS_LIST,
  VALUE_LIST 
)
Value:
_GENERATE_SOA_CONST_VIEW(CONST_VIEW, VIEW, SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST)) \
_GENERATE_SOA_VIEW(CONST_VIEW, VIEW, SOA_VIEW_LAYOUT_LIST(LAYOUTS_LIST), SOA_VIEW_VALUE_LIST(VALUE_LIST))
#define SOA_VIEW_VALUE_LIST(...)
Definition: SoAView.h:20
#define SOA_VIEW_LAYOUT_LIST(...)
Definition: SoAView.h:14
#define _GENERATE_SOA_CONST_VIEW(CONST_VIEW, VIEW, LAYOUTS_LIST, VALUE_LIST)
Definition: SoAView.h:787

Definition at line 809 of file SoAView.h.

◆ SOA_VIEW_LAYOUT

#define SOA_VIEW_LAYOUT (   TYPE,
  NAME 
)    (TYPE, NAME)

Definition at line 12 of file SoAView.h.

◆ SOA_VIEW_LAYOUT_LIST

#define SOA_VIEW_LAYOUT_LIST (   ...)    __VA_ARGS__

Definition at line 14 of file SoAView.h.

◆ SOA_VIEW_VALUE

#define SOA_VIEW_VALUE (   LAYOUT_NAME,
  LAYOUT_MEMBER 
)    (LAYOUT_NAME, LAYOUT_MEMBER, LAYOUT_MEMBER)

Definition at line 16 of file SoAView.h.

◆ SOA_VIEW_VALUE_LIST

#define SOA_VIEW_VALUE_LIST (   ...)    __VA_ARGS__

Definition at line 20 of file SoAView.h.

◆ SOA_VIEW_VALUE_RENAME

#define SOA_VIEW_VALUE_RENAME (   LAYOUT_NAME,
  LAYOUT_MEMBER,
  LOCAL_NAME 
)    (LAYOUT_NAME, LAYOUT_MEMBER, LOCAL_NAME)

Definition at line 18 of file SoAView.h.