libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem > Struct Template Reference

#include <memops_impl.hpp>

Public Types

enum  : std::size_t {
  src_sz =SrcSz , dest_sz =DestSz , smallest_buff =SmallestBuff , div =Div ,
  rem =Rem , end =smallest_buff-rem
}
 
using element_type = Unit
 
using unrolled_op_t = private_::unroll< div >
 

Public Member Functions

 BOOST_MPL_ASSERT_RELATION (smallest_buff, >, 0)
 
 BOOST_MPL_ASSERT_RELATION (sizeof(Unit), >, 0)
 
 BOOST_MPL_ASSERT_RELATION (div, >=, 0)
 
 BOOST_MPL_ASSERT_RELATION (rem, >=, 0)
 
 BOOST_MPL_ASSERT_RELATION (end, >=, 0)
 
 BOOST_MPL_ASSERT_RELATION (rem,<=, sizeof(Unit))
 
 BOOST_MPL_ASSERT_RELATION ((sizeof(Unit) *div),<=, smallest_buff)
 
 BOOST_MPL_ASSERT_RELATION (rem,<=, smallest_buff)
 
 BOOST_MPL_ASSERT_RELATION (end,<=, smallest_buff)
 

Static Public Member Functions

template<class Op >
static constexpr void FORCE_INLINE result (Op &&o) noexcept(noexcept(unrolled_op_t::result(std::forward< Op >(o))))
 
template<class Op >
static constexpr bool FORCE_INLINE result_b (Op &&o) noexcept(noexcept(unrolled_op_t::result(std::forward< Op >(o))))
 

Detailed Description

template<std::size_t SrcSz, std::size_t DestSz, class Unit, std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
struct jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >

Definition at line 111 of file memops_impl.hpp.

Member Typedef Documentation

◆ element_type

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
using jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::element_type = Unit

Definition at line 112 of file memops_impl.hpp.

◆ unrolled_op_t

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
using jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::unrolled_op_t = private_::unroll<div>

Definition at line 121 of file memops_impl.hpp.

Member Enumeration Documentation

◆ anonymous enum

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
anonymous enum : std::size_t
Enumerator
src_sz 
dest_sz 
smallest_buff 
div 

How many whole Units can be copied.

rem 
end 

How much of the buffer was copied.

Definition at line 113 of file memops_impl.hpp.

Member Function Documentation

◆ BOOST_MPL_ASSERT_RELATION() [1/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( (sizeof(Unit) *div ,
<=  ,
smallest_buff   
)

◆ BOOST_MPL_ASSERT_RELATION() [2/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( div  ,
>=  ,
 
)

◆ BOOST_MPL_ASSERT_RELATION() [3/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( end  ,
>=  ,
 
)

◆ BOOST_MPL_ASSERT_RELATION() [4/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( end  ,
<=  ,
smallest_buff   
)

◆ BOOST_MPL_ASSERT_RELATION() [5/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( rem  ,
>=  ,
 
)

◆ BOOST_MPL_ASSERT_RELATION() [6/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( rem  ,
<=  ,
sizeof(Unit)   
)

◆ BOOST_MPL_ASSERT_RELATION() [7/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( rem  ,
<=  ,
smallest_buff   
)

◆ BOOST_MPL_ASSERT_RELATION() [8/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( sizeof(Unit)  ,
 
)

◆ BOOST_MPL_ASSERT_RELATION() [9/9]

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::BOOST_MPL_ASSERT_RELATION ( smallest_buff  ,
 
)

◆ result()

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
template<class Op >
static constexpr void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::result ( Op &&  o)
inlinestaticconstexprnoexcept

Definition at line 138 of file memops_impl.hpp.

◆ result_b()

template<std::size_t SrcSz, std::size_t DestSz, class Unit , std::size_t SmallestBuff = min<std::size_t, SrcSz, DestSz>::value, std::size_t Div = SmallestBuff/sizeof(Unit), std::size_t Rem = SmallestBuff%sizeof(Unit)>
template<class Op >
static constexpr bool FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >::result_b ( Op &&  o)
inlinestaticconstexprnoexcept

Definition at line 144 of file memops_impl.hpp.


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