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

StringCompressor.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 #ifndef __STRING_COMPRESSOR_H
00010 #define __STRING_COMPRESSOR_H
00011 
00012 #include "Export.h"
00013 #include "DS_Map.h"
00014 #include "RakMemoryOverride.h"
00015 
00016 
00017 //#include <string>
00018 
00020 namespace RakNet
00021 {
00022         class BitStream;
00023         class RakString;
00024 };
00025 
00026 class HuffmanEncodingTree;
00027 
00032 class RAK_DLL_EXPORT StringCompressor
00033 {
00034 public:
00035         
00036         // Destructor   
00037         ~StringCompressor();
00038         
00042         static StringCompressor* Instance(void);
00043 
00049         void GenerateTreeFromStrings( unsigned char *input, unsigned inputLength, int languageID );
00050         
00056         void EncodeString( const char *input, int maxCharsToWrite, RakNet::BitStream *output, int languageID=0 );
00057         
00063         bool DecodeString( char *output, int maxCharsToWrite, RakNet::BitStream *input, int languageID=0 );
00064 
00065 #ifdef _CSTRING_COMPRESSOR
00066         void EncodeString( const CString &input, int maxCharsToWrite, RakNet::BitStream *output, int languageID=0 );
00067         bool DecodeString( CString &output, int maxCharsToWrite, RakNet::BitStream *input, int languageID=0 );
00068 #endif
00069 
00070 #ifdef _STD_STRING_COMPRESSOR
00071         void EncodeString( const std::string &input, int maxCharsToWrite, RakNet::BitStream *output, int languageID=0 );
00072         bool DecodeString( std::string *output, int maxCharsToWrite, RakNet::BitStream *input, int languageID=0 );
00073 #endif
00074 
00075         void EncodeString( const RakNet::RakString *input, int maxCharsToWrite, RakNet::BitStream *output, int languageID=0 );
00076         bool DecodeString( RakNet::RakString *output, int maxCharsToWrite, RakNet::BitStream *input, int languageID=0 );
00077 
00079         static void AddReference(void);
00080         
00082         static void RemoveReference(void);
00083 
00085         StringCompressor();
00086 
00087 private:
00088         
00090         static StringCompressor *instance;
00091         
00093         DataStructures::Map<int, HuffmanEncodingTree *> huffmanEncodingTrees;
00094         
00095         static int referenceCount;
00096 };
00097 
00100 #define stringCompressor StringCompressor::Instance()
00101 
00102 #endif

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