• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

DS_HuffmanEncodingTree.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 #ifndef __HUFFMAN_ENCODING_TREE
00010 #define __HUFFMAN_ENCODING_TREE
00011 
00012 #include "RakMemoryOverride.h"
00013 #include "DS_HuffmanEncodingTreeNode.h"
00014 #include "BitStream.h"
00015 #include "Export.h"
00016 #include "DS_LinkedList.h" 
00017 
00019 class RAK_DLL_EXPORT HuffmanEncodingTree
00020 {
00021 
00022 public:
00023         HuffmanEncodingTree();
00024         ~HuffmanEncodingTree();
00025 
00030         void EncodeArray( unsigned char *input, size_t sizeInBytes, RakNet::BitStream * output );
00031 
00032         // \brief Decodes an array encoded by EncodeArray().
00033         unsigned DecodeArray( RakNet::BitStream * input, BitSize_t sizeInBits, size_t maxCharsToWrite, unsigned char *output );
00034         void DecodeArray( unsigned char *input, BitSize_t sizeInBits, RakNet::BitStream * output );
00035 
00037         void GenerateFromFrequencyTable( unsigned int frequencyTable[ 256 ] );
00038 
00040         void FreeMemory( void );
00041 
00042 private:
00043 
00045 
00046         HuffmanEncodingTreeNode *root;
00047 
00049 
00050 
00051         struct CharacterEncoding
00052         {
00053                 unsigned char* encoding;
00054                 unsigned short bitLength;
00055         };
00056 
00057         CharacterEncoding encodingTable[ 256 ];
00058 
00059         void InsertNodeIntoSortedList( HuffmanEncodingTreeNode * node, DataStructures::LinkedList<HuffmanEncodingTreeNode *> *huffmanEncodingTreeNodeList ) const;
00060 };
00061 
00062 #endif

Generated on Thu Sep 30 2010 01:27:22 for RakNet by  doxygen 1.7.1