stream/include/nil/crypto3/detail/pack.hpp File Reference
#include <nil/crypto3/detail/type_traits.hpp>
#include <nil/crypto3/detail/stream_endian.hpp>
#include <nil/crypto3/detail/exploder.hpp>
#include <nil/crypto3/detail/imploder.hpp>
#include <nil/crypto3/detail/predef.hpp>
#include <boost/assert.hpp>
#include <boost/static_assert.hpp>
#include <boost/endian.hpp>
#include <boost/utility/enable_if.hpp>
+ Include dependency graph for stream/include/nil/crypto3/detail/pack.hpp:

Go to the source code of this file.

Classes

struct  nil::crypto3::detail::can_memcpy< Endianness, InputBits, OutputBits, InT, OutT >
 can_memcpy trait is derived from host_can_memcpy trait and is invoked depending on data endianness. Note that there is a single endianness template parameter since otherwise we have to transform data in accordance with endianness conversion rules. More...
 
struct  nil::crypto3::detail::can_memcpy< stream_endian::host_unit< UnitBits >, InputBits, OutputBits, InT, OutT >
 
struct  nil::crypto3::detail::host_can_memcpy< UnitBits, InputBits, OutputBits, InT, OutT >
 The group of traits below is used to determine the possibility of fast data copy. By fast data copy we mean that the data is stored contiguously in the memory, so it can be copied faster byte-by-byte. Currently, fast data copy is implemented by memcpy function call. More...
 
struct  nil::crypto3::detail::packer< InputEndianness, OutputEndianness, InputValueBits, OutputValueBits, InputType, OutputType >
 This packer deals with arbitrary input and output (but not bool) data elements. More...
 
struct  nil::crypto3::detail::real_packer< Endianness, Bits, Bits, false, false >
 
struct  nil::crypto3::detail::real_packer< Endianness, InputBits, OutputBits, false, true >
 
struct  nil::crypto3::detail::real_packer< Endianness, InputBits, OutputBits, true, false >
 

Namespaces

 nil
 
 nil::crypto3
 
 nil::crypto3::detail
 

Functions

template<typename Endianness , int InValueBits, int OutValueBits, typename InputType , typename OutputType >
void nil::crypto3::detail::pack (const InputType &in, OutputType &out)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator , typename OutputType , typename = typename std::enable_if<!std::is_arithmetic<OutputType>::value>::type>
void nil::crypto3::detail::pack (InputIterator first, InputIterator last, OutputType &out)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename CatT1 , typename InputIterator2 , typename = typename std::enable_if<detail::is_iterator<InputIterator1>::value>::type, typename = typename std::enable_if<detail::is_iterator<InputIterator2>::value>::type>
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, CatT1, InputIterator2 b2)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename CatT1 , typename InputIterator2 , typename CatT2 >
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, CatT1, InputIterator2 b2, InputIterator2, CatT2)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 , typename = typename std::enable_if<detail::is_iterator<InputIterator2>::value>::type>
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, InputIterator2 b2)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 >
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, InputIterator2 b2, InputIterator2 e2)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 >
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, std::random_access_iterator_tag, InputIterator2 b2)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 >
void nil::crypto3::detail::pack (InputIterator1 b1, InputIterator1 e1, std::random_access_iterator_tag, InputIterator2 b2, InputIterator2 e2, std::random_access_iterator_tag)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 >
void nil::crypto3::detail::pack_n (InputIterator1 in, size_t in_n, InputIterator2 out)
 
template<typename Endianness , int InValueBits, int OutValueBits, typename InputIterator1 , typename InputIterator2 >
void nil::crypto3::detail::pack_n (InputIterator1 in, size_t in_n, InputIterator2 out, size_t out_n)