![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
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.