CMS 3D CMS Logo

Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
SoACommon.h File Reference
#include <cstdint>
#include <cassert>
#include <ostream>
#include <tuple>
#include <type_traits>
#include <boost/preprocessor.hpp>
#include "FWCore/Utilities/interface/typedefs.h"

Go to the source code of this file.

Classes

struct  cms::soa::SoAAccessors< T >::ColumnType< columnType >::AccessType< accessType >
 
struct  cms::soa::add_restrict< T, RESTRICT_QUALIFY >
 
struct  cms::soa::add_restrict< T, RestrictQualify::disabled >
 
struct  cms::soa::add_restrict< T, RestrictQualify::enabled >
 
struct  cms::soa::SoAAccessors< T >::ColumnType< columnType >::AccessType< accessType >::Alignment< alignment >
 
struct  cms::soa::AlignmentEnforcement
 
struct  cms::soa::CacheLineSize
 
struct  cms::soa::SoAAccessors< T >::ColumnType< columnType >
 
struct  cms::soa::EigenConstMapMaker< C >
 
struct  cms::soa::SoAAccessors< T >::ColumnType< columnType >::AccessType< accessType >::Alignment< alignment >::RestrictQualifier< restrictQualify >
 
struct  cms::soa::SoAAccessors< T >
 
struct  cms::soa::SoAColumnAccessorsImpl< typename, SoAColumnType, SoAAccessType, byte_size_type, bool >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::column, SoAAccessType::constAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::column, SoAAccessType::mutableAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::eigen, SoAAccessType::constAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::eigen, SoAAccessType::mutableAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::scalar, SoAAccessType::constAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAColumnAccessorsImpl< T, SoAColumnType::scalar, SoAAccessType::mutableAccess, alignment, restrictQualify >
 
struct  cms::soa::SoAConstParameters_ColumnType< COLUMN_TYPE >
 
struct  cms::soa::SoAConstParametersImpl< COLUMN_TYPE, T >
 
struct  cms::soa::SoAConstParametersImpl< COLUMN_TYPE, T >
 
struct  cms::soa::SoAConstParametersImpl< SoAColumnType::eigen, T >
 
class  cms::soa::SoAConstValue< COLUMN_TYPE, T, ALIGNMENT, RESTRICT_QUALIFY >
 
class  cms::soa::SoAConstValue< SoAColumnType::eigen, C, ALIGNMENT, RESTRICT_QUALIFY >
 
struct  cms::soa::SoAParameters_ColumnType< COLUMN_TYPE >
 
struct  cms::soa::SoAParametersImpl< COLUMN_TYPE, T >
 
struct  cms::soa::SoAParametersImpl< COLUMN_TYPE, T >
 
struct  cms::soa::SoAParametersImpl< SoAColumnType::eigen, T >
 
class  cms::soa::SoAValue< COLUMN_TYPE, T, ALIGNMENT, RESTRICT_QUALIFY >
 
class  cms::soa::SoAValue< SoAColumnType::eigen, C, ALIGNMENT, RESTRICT_QUALIFY >
 

Namespaces

 cms::soa
 
 cms::soa::RangeChecking
 
 cms::soa::RestrictQualify
 

Macros

#define _ITERATE_ON_ALL(MACRO, DATA, ...)   BOOST_PP_SEQ_FOR_EACH(MACRO, DATA, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))
 
#define _ITERATE_ON_ALL_COMMA(MACRO, DATA, ...)   BOOST_PP_TUPLE_ENUM(BOOST_PP_SEQ_TO_TUPLE(_ITERATE_ON_ALL(MACRO, DATA, __VA_ARGS__)))
 
#define _SWITCH_ON_TYPE(VALUE_TYPE, IF_SCALAR, IF_COLUMN, IF_EIGEN_COLUMN)
 
#define _VALUE_TYPE_COLUMN   1
 
#define _VALUE_TYPE_EIGEN_COLUMN   2
 
#define _VALUE_TYPE_SCALAR   0
 
#define CMS_SOA_BYTE_SIZE_TYPE   std::size_t
 
#define SOA_COLUMN(TYPE, NAME)   (_VALUE_TYPE_COLUMN, TYPE, NAME)
 
#define SOA_DEVICE_ONLY
 
#define SOA_EIGEN_COLUMN(TYPE, NAME)   (_VALUE_TYPE_EIGEN_COLUMN, TYPE, NAME)
 
#define SOA_HOST_DEVICE
 
#define SOA_HOST_ONLY
 
#define SOA_INLINE   inline __attribute__((always_inline))
 
#define SOA_SCALAR(TYPE, NAME)   (_VALUE_TYPE_SCALAR, TYPE, NAME)
 
#define SOA_THROW_OUT_OF_RANGE(A)   { throw std::out_of_range(A); }
 

Typedefs

using cms::soa::byte_size_type = std::size_t
 
using cms::soa::size_type = cms_int32_t
 

Enumerations

enum  cms::soa::SoAAccessType : bool { cms::soa::SoAAccessType::mutableAccess, cms::soa::SoAAccessType::constAccess }
 
enum  cms::soa::SoAColumnType { cms::soa::SoAColumnType::scalar = 0, cms::soa::SoAColumnType::column = 1, cms::soa::SoAColumnType::eigen = 2 }
 

Functions

template<SoAColumnType COLUMN_TYPE, typename T >
 cms::soa::__attribute__ ((always_inline)) const expr SoAParametersImpl< COLUMN_TYPE
 
template<typename T >
 cms::soa::__attribute__ ((always_inline)) const expr SoAParametersImpl< SoAColumnType
 
constexpr byte_size_type cms::soa::alignSize (byte_size_type size, byte_size_type alignment)
 
T cms::soa::const_cast_SoAParametersImpl (SoAConstParametersImpl< COLUMN_TYPE, T > const &o)
 
template<typename SOA , typename SFINAE = typename std::enable_if_t<std::is_invocable_v<decltype(&SOA::soaToStreamInternal), SOA&, std::ostream&>>>
std::ostream & operator<< (std::ostream &os, const SOA &soa)
 

Variables

constexpr bool cms::soa::RestrictQualify::Default = enabled
 
constexpr bool cms::soa::RangeChecking::Default = enabled
 
constexpr bool cms::soa::RestrictQualify::disabled = false
 
constexpr bool cms::soa::RangeChecking::disabled = false
 
constexpr bool cms::soa::RestrictQualify::enabled = true
 
constexpr bool cms::soa::RangeChecking::enabled = true
 

Macro Definition Documentation

◆ _ITERATE_ON_ALL

#define _ITERATE_ON_ALL (   MACRO,
  DATA,
  ... 
)    BOOST_PP_SEQ_FOR_EACH(MACRO, DATA, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))

Definition at line 572 of file SoACommon.h.

◆ _ITERATE_ON_ALL_COMMA

#define _ITERATE_ON_ALL_COMMA (   MACRO,
  DATA,
  ... 
)    BOOST_PP_TUPLE_ENUM(BOOST_PP_SEQ_TO_TUPLE(_ITERATE_ON_ALL(MACRO, DATA, __VA_ARGS__)))

Definition at line 568 of file SoACommon.h.

◆ _SWITCH_ON_TYPE

#define _SWITCH_ON_TYPE (   VALUE_TYPE,
  IF_SCALAR,
  IF_COLUMN,
  IF_EIGEN_COLUMN 
)
Value:
BOOST_PP_IF( \
BOOST_PP_EQUAL(VALUE_TYPE, _VALUE_TYPE_SCALAR), \
IF_SCALAR, \
BOOST_PP_IF( \
BOOST_PP_EQUAL(VALUE_TYPE, _VALUE_TYPE_COLUMN), \
IF_COLUMN, \
BOOST_PP_IF(BOOST_PP_EQUAL(VALUE_TYPE, _VALUE_TYPE_EIGEN_COLUMN), IF_EIGEN_COLUMN, BOOST_PP_EMPTY())))
#define _VALUE_TYPE_SCALAR
Definition: SoACommon.h:50
#define _VALUE_TYPE_EIGEN_COLUMN
Definition: SoACommon.h:52
#define _VALUE_TYPE_COLUMN
Definition: SoACommon.h:51

Definition at line 575 of file SoACommon.h.

◆ _VALUE_TYPE_COLUMN

#define _VALUE_TYPE_COLUMN   1

Definition at line 51 of file SoACommon.h.

◆ _VALUE_TYPE_EIGEN_COLUMN

#define _VALUE_TYPE_EIGEN_COLUMN   2

Definition at line 52 of file SoACommon.h.

◆ _VALUE_TYPE_SCALAR

#define _VALUE_TYPE_SCALAR   0

Definition at line 50 of file SoACommon.h.

◆ CMS_SOA_BYTE_SIZE_TYPE

#define CMS_SOA_BYTE_SIZE_TYPE   std::size_t

Definition at line 57 of file SoACommon.h.

◆ SOA_COLUMN

#define SOA_COLUMN (   TYPE,
  NAME 
)    (_VALUE_TYPE_COLUMN, TYPE, NAME)

Definition at line 564 of file SoACommon.h.

◆ SOA_DEVICE_ONLY

#define SOA_DEVICE_ONLY

Definition at line 26 of file SoACommon.h.

◆ SOA_EIGEN_COLUMN

#define SOA_EIGEN_COLUMN (   TYPE,
  NAME 
)    (_VALUE_TYPE_EIGEN_COLUMN, TYPE, NAME)

Definition at line 565 of file SoACommon.h.

◆ SOA_HOST_DEVICE

#define SOA_HOST_DEVICE

Definition at line 27 of file SoACommon.h.

◆ SOA_HOST_ONLY

#define SOA_HOST_ONLY

Definition at line 25 of file SoACommon.h.

◆ SOA_INLINE

#define SOA_INLINE   inline __attribute__((always_inline))

Definition at line 28 of file SoACommon.h.

◆ SOA_SCALAR

#define SOA_SCALAR (   TYPE,
  NAME 
)    (_VALUE_TYPE_SCALAR, TYPE, NAME)

Definition at line 563 of file SoACommon.h.

◆ SOA_THROW_OUT_OF_RANGE

#define SOA_THROW_OUT_OF_RANGE (   A)    { throw std::out_of_range(A); }

Definition at line 45 of file SoACommon.h.

Function Documentation

◆ operator<<()

template<typename SOA , typename SFINAE = typename std::enable_if_t<std::is_invocable_v<decltype(&SOA::soaToStreamInternal), SOA&, std::ostream&>>>
std::ostream& operator<< ( std::ostream &  os,
const SOA &  soa 
)

Definition at line 729 of file SoACommon.h.

References gpuVertexFinder::soa.

729  {
730  soa.soaToStreamInternal(os);
731  return os;
732 }