32 #ifndef __ReinterpretCtr_dot_hpp__ 33 #define __ReinterpretCtr_dot_hpp__ 35 #include "features/compilerfeatures.h" 53 template <
typename ToType,
typename CBRNG>
55 typedef ToType ctr_type;
56 typedef typename CBRNG::key_type key_type;
57 typedef typename CBRNG::ctr_type bctype;
58 typedef typename CBRNG::ukey_type ukey_type;
59 RANDOM_ITERATOR_R123_STATIC_ASSERT(
60 sizeof(ToType) ==
sizeof(bctype) &&
sizeof(
typename bctype::value_type) != 16,
61 "ReinterpretCtr: sizeof(ToType) is not the same as sizeof(CBRNG::ctr_type) or " 62 "CBRNG::ctr_type::value_type looks like it might be __m128i");
80 ctr_type operator()(ctr_type c, key_type k) {
82 std::memcpy(&bc, &c,
sizeof(c));
85 std::memcpy(&c, &bc,
sizeof(bc));