Program Listing for File Huffman.h

↰ Return to documentation for file (ADS/string/Huffman.h)

/*--------------------------------------------------------------------------*/
/*----------------------------- File Huffman.h -----------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

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

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

#include "ADS/Contract.h"
#include "ADS/priority/HeapPriorityQueue.h"

#include <algorithm>
#include <cstddef>
#include <map>
#include <stdexcept>
#include <string>
#include <vector>

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

namespace ADS {

template< class C , class F >
std::map< C , std::string > huffman( const std::map< C , F > & freq );

template< class C >
std::string encode( const std::basic_string< C > & text ,
                    const std::map< C , std::string > & code );

template< class C >
std::basic_string< C > decode( const std::string & bits ,
                               const std::map< C , std::string > & code );

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

}  // end( namespace ADS )

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

#include "ADS/string/impl/Huffman.tpp"

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

#endif  /* Huffman.h included */

/*--------------------------------------------------------------------------*/
/*--------------------------- End File Huffman.h ---------------------------*/
/*--------------------------------------------------------------------------*/