Exploder functions

## Classes | |

struct | nil::crypto3::detail::exploder< InputEndianness, OutputEndianness, InputBits, OutputBits, k > |

exploder forms a sequence of output values represented in OutputEndianness endianness from an input value represented in InputEndianness endianness. The function explode is invoked recursively, and the parameter k is used to track the number of already processed output values derived from the input value. The recursion ends when all elements the input value can hold have already been processed, i.e. when k == InputBits. More... | |

struct | nil::crypto3::detail::exploder_shift< InputEndianness, UnitBits, InputBits, OutputBits, k, IsLittleUnit > |

exploder_shift trait is used to determine whether the output elements are splitted from an input element in reverse order. Since the input and output types are integral now, this trait contains the shift indicating the position of output element derived from the input element when k output bits have already been processed. More... | |

struct | nil::crypto3::detail::exploder_step< InputEndianness, OutputEndianness, UnitBits, InputBits, OutputBits, k > |

exploder_step obtains an output value represented in OutputEndianness endianness from an input value represented in InputEndianness endianness when k output bits have already been processed. It uses unit_reverser and bit_reverser to deal with the order of units and bits in the output value, respectively. Shift constant is determined by the exploder_shift trait. More... | |

struct | nil::crypto3::detail::outvalue_helper< OutIter, OutBits, T > |

outvalue_helper trait is used to determine the output value type. If OutBits is not an exact power of two for which the type uint_t is defined, the type with the least power of two bits greater than OutBits is taken. Due to current exploder struct definition, this case is possible, when OutputBits is a factor of UnitBits less than UnitBits, and UnitBits is no more than CHAR_BIT. More... | |