lzw-assignment/src/bitpack.hh

38 lines
1.2 KiB
C++
Raw Normal View History

/**
* \file bitpack.hh
* \brief Header for bit-packing functions
*/
#ifndef LZW_SRC_BITPACK_H_
#define LZW_SRC_BITPACK_H_
#include <cstdint>
#include <vector>
2018-06-09 20:59:11 +00:00
/// \brief Bat-packs the input dynamically
[[nodiscard]] std::vector<unsigned char>
pack(const std::vector<std::uint16_t> &);
/// \brief Packs std::uint16_t of n bits into unsigned char
2018-06-09 20:59:11 +00:00
[[nodiscard]] std::vector<unsigned char>
2018-06-09 00:50:14 +00:00
pack_n(const std::vector<std::uint16_t>::const_iterator,
2018-06-09 20:59:11 +00:00
const std::vector<std::uint16_t>::const_iterator, const int);
/// \brief Specialization of \ref pack_n for 16bits
2018-06-09 20:59:11 +00:00
[[nodiscard]] std::vector<unsigned char>
2018-06-09 00:50:14 +00:00
pack_16(const std::vector<std::uint16_t>::const_iterator,
const std::vector<std::uint16_t>::const_iterator);
2018-06-09 20:59:11 +00:00
[[nodiscard]] std::vector<std::uint16_t>
unpack(const std::vector<unsigned char> &);
[[nodiscard]] std::vector<std::uint16_t>
unpack_n(const std::vector<unsigned char>::const_iterator,
const std::vector<unsigned char>::const_iterator, const int t_n);
[[nodiscard]] std::vector<std::uint16_t>
unpack_16(const std::vector<unsigned char>::const_iterator,
const std::vector<unsigned char>::const_iterator);
#endif /* LZW_SRC_BITPACK_H_ */