Program Listing for File HuffmanCoder.h

↰ Return to documentation for file (ADS/compression/HuffmanCoder.h)

/*--------------------------------------------------------------------------*/
/*-------------------------- File HuffmanCoder.h ---------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_HuffmanCoder
 #define __ADS_HuffmanCoder
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"

#include <algorithm>
#include <array>
#include <bit>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <span>
#include <vector>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

[[nodiscard]] inline std::vector< std::uint8_t > huffmanCompress(
                                          std::span< const std::uint8_t > in );

[[nodiscard]] inline std::vector< std::uint8_t > huffmanDecompress(
                                          std::span< const std::uint8_t > in );

[[nodiscard]] inline std::array< std::uint8_t , 256 > limitedHuffmanLengths(
                             const std::array< std::uint64_t , 256 > & f ,
                             int L );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/compression/impl/HuffmanCoder.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* HuffmanCoder.h included */

/*--------------------------------------------------------------------------*/
/*------------------------ End File HuffmanCoder.h -------------------------*/
/*--------------------------------------------------------------------------*/