Shadowrun: Awakened 29 September 2011 - Build 871
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 
00018 namespace RakNet
00019 {
00020 
00022 class RAK_DLL_EXPORT HuffmanEncodingTree
00023 {
00024 
00025 public:
00026     HuffmanEncodingTree();
00027     ~HuffmanEncodingTree();
00028 
00033     void EncodeArray( unsigned char *input, size_t sizeInBytes, RakNet::BitStream * output );
00034 
00035     // \brief Decodes an array encoded by EncodeArray().
00036     unsigned DecodeArray( RakNet::BitStream * input, BitSize_t sizeInBits, size_t maxCharsToWrite, unsigned char *output );
00037     void DecodeArray( unsigned char *input, BitSize_t sizeInBits, RakNet::BitStream * output );
00038 
00040     void GenerateFromFrequencyTable( unsigned int frequencyTable[ 256 ] );
00041 
00043     void FreeMemory( void );
00044 
00045 private:
00046 
00048 
00049     HuffmanEncodingTreeNode *root;
00050 
00052 
00053 
00054     struct CharacterEncoding
00055     {
00056         unsigned char* encoding;
00057         unsigned short bitLength;
00058     };
00059 
00060     CharacterEncoding encodingTable[ 256 ];
00061 
00062     void InsertNodeIntoSortedList( HuffmanEncodingTreeNode * node, DataStructures::LinkedList<HuffmanEncodingTreeNode *> *huffmanEncodingTreeNodeList ) const;
00063 };
00064 
00065 } // namespace RakNet
00066 
00067 #endif

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net