Low-Level Abstraction of Memory Access
llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral > Struct Template Reference

#include <BitPackedInt.hpp>

+ Inheritance diagram for llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >:
+ Collaboration diagram for llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >:

Public Types

using LinearizeArrayIndexFunctor = TLinearizeArrayIndexFunctor
 
using StoredIntegral = TStoredIntegral
 
- Public Types inherited from llama::mapping::MappingBase< TArrayExtents, TRecordDim >
using ArrayExtents = TArrayExtents
 
using RecordDim = TRecordDim
 

Public Member Functions

constexpr auto bits () const -> size_type
 
template<typename B = Bits, std::enable_if_t< isConstant< B >, int > = 0>
constexpr BitPackedIntCommon (TArrayExtents extents={}, Bits bits={}, TRecordDim={})
 
template<typename B = Bits, std::enable_if_t<!isConstant< B >, int > = 0>
constexpr BitPackedIntCommon (TArrayExtents extents, Bits bits, TRecordDim={})
 
- Public Member Functions inherited from llama::mapping::MappingBase< TArrayExtents, TRecordDim >
constexpr MappingBase ()=default
 
constexpr MappingBase (ArrayExtents extents, RecordDim={})
 
constexpr auto extents () const -> ArrayExtents
 

Static Public Member Functions

template<std::size_t... RecordCoords>
static constexpr auto isComputed (RecordCoord< RecordCoords... >)
 

Protected Types

using Base = MappingBase< TArrayExtents, TRecordDim >
 
using VHBits = llama::internal::BoxedValue< Bits >
 
using size_type = typename TArrayExtents::value_type
 
template<typename T >
using IsAllowedFieldType = mp_or< std::is_integral< T >, std::is_enum< T > >
 
template<typename T >
using IsFieldTypeSmallerOrEqualStorageIntegral = mp_bool< sizeof(T)<=sizeof(StoredIntegral)>
 
- Protected Types inherited from llama::mapping::MappingBase< TArrayExtents, TRecordDim >
using ArrayIndex = typename ArrayExtents::Index
 
using size_type = typename ArrayExtents::value_type
 

Additional Inherited Members

- Protected Member Functions inherited from llama::internal::BoxedValue< Bits >
 BoxedValue ()=default
 
 BoxedValue (Bits value)
 
constexpr auto value () const
 

Detailed Description

template<typename TArrayExtents, typename TRecordDim, typename Bits, SignBit SignBit, typename TLinearizeArrayIndexFunctor, typename TStoredIntegral>
struct llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >

Definition at line 242 of file BitPackedInt.hpp.

Member Typedef Documentation

◆ Base

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::Base = MappingBase<TArrayExtents, TRecordDim>
protected

Definition at line 257 of file BitPackedInt.hpp.

◆ IsAllowedFieldType

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
template<typename T >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::IsAllowedFieldType = mp_or<std::is_integral<T>, std::is_enum<T> >
protected

Definition at line 262 of file BitPackedInt.hpp.

◆ IsFieldTypeSmallerOrEqualStorageIntegral

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
template<typename T >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::IsFieldTypeSmallerOrEqualStorageIntegral = mp_bool<sizeof(T) <= sizeof(StoredIntegral)>
protected

Definition at line 269 of file BitPackedInt.hpp.

◆ LinearizeArrayIndexFunctor

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::LinearizeArrayIndexFunctor = TLinearizeArrayIndexFunctor

Definition at line 246 of file BitPackedInt.hpp.

◆ size_type

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::size_type = typename TArrayExtents::value_type
protected

Definition at line 259 of file BitPackedInt.hpp.

◆ StoredIntegral

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::StoredIntegral = TStoredIntegral

Definition at line 247 of file BitPackedInt.hpp.

◆ VHBits

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
using llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::VHBits = llama::internal::BoxedValue<Bits>
protected

Definition at line 258 of file BitPackedInt.hpp.

Constructor & Destructor Documentation

◆ BitPackedIntCommon() [1/2]

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
template<typename B = Bits, std::enable_if_t< isConstant< B >, int > = 0>
constexpr llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::BitPackedIntCommon ( TArrayExtents  extents = {},
Bits  bits = {},
TRecordDim  = {} 
)
inlineexplicitconstexpr

Definition at line 283 of file BitPackedInt.hpp.

◆ BitPackedIntCommon() [2/2]

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
template<typename B = Bits, std::enable_if_t<!isConstant< B >, int > = 0>
constexpr llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::BitPackedIntCommon ( TArrayExtents  extents,
Bits  bits,
TRecordDim  = {} 
)
inlineexplicitconstexpr

Definition at line 307 of file BitPackedInt.hpp.

Member Function Documentation

◆ bits()

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
constexpr auto llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::bits ( ) const -> size_type
inlineconstexpr

Definition at line 277 of file BitPackedInt.hpp.

◆ isComputed()

template<typename TArrayExtents , typename TRecordDim , typename Bits , SignBit SignBit, typename TLinearizeArrayIndexFunctor , typename TStoredIntegral >
template<std::size_t... RecordCoords>
static constexpr auto llama::mapping::internal::BitPackedIntCommon< TArrayExtents, TRecordDim, Bits, SignBit, TLinearizeArrayIndexFunctor, TStoredIntegral >::isComputed ( RecordCoord< RecordCoords... >  )
inlinestaticconstexpr

Definition at line 340 of file BitPackedInt.hpp.


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