- Main Page
- Modules
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# StringCompressor Class Reference

Writes and reads strings to and from bitstreams. More...

`#include <StringCompressor.h>`

List of all members.

## Public Member Functions
| ~StringCompressor ()
| Destructor.
void | GenerateTreeFromStrings (unsigned char *input, unsigned inputLength)
void | EncodeString (const char *input, int maxCharsToWrite, RakNet::BitStream *output)
bool | DecodeString (char *output, int maxCharsToWrite, RakNet::BitStream *input)
bool | DecodeAndAllocateString (char **output, int maxCharsToWrite, RakNet::BitStream *input)
## Static Public Member Functions
static StringCompressor * | Instance (void)
static void | AddReference (void)
| Used so I can allocate and deallocate this singleton at runtime.
static void | RemoveReference (void)
| Used so I can allocate and deallocate this singleton at runtime.
## Private Member Functions
void | GenerateHuffmanEncodingTree (void)
| Create the Huffman encoding tree (obviously).
| StringCompressor ()
| Private Constructor.
## Private Attributes
HuffmanEncodingTree * | huffmanEncodingTree
| Pointer to the huffman encoding tree.
## Static Private Attributes
static StringCompressor * | instance = 0
| Singleton instance.
static int | referenceCount = 0

## Detailed Description

Writes and reads strings to and from bitstreams.

Only works with ASCII strings. The default compression is for English. You can call GenerateTreeFromStrings to compress and decompress other languages efficiently as well.

## Member Function Documentation

bool StringCompressor::DecodeAndAllocateString | ( | char ** | output,
|  | int | maxCharsToWrite,
|  | RakNet::BitStream * | input
| ) |

  | Writes input to output, uncompressed. Takes care of the null terminator for you. Parameters:
  `[out]` | output | A block of bytes to receive the output
  `[in]` | maxCharsToWrite | Max bytes to allocate. 0 for unlimited (use the size of the incoming string). A NULL terminator will always be appended to the output string. If the maxCharsToWrite is not large enough, the string will be truncated.
  `[in]` | input | The bitstream containing the compressed string

bool StringCompressor::DecodeString | ( | char * | output,
|  | int | maxCharsToWrite,
|  | RakNet::BitStream * | input
| ) |

  | Writes input to output, uncompressed. Takes care of the null terminator for you. Parameters:
  `[out]` | output | A block of bytes to receive the output
  `[in]` | maxCharsToWrite | Size, in bytes, of output . A NULL terminator will always be appended to the output string. If the maxCharsToWrite is not large enough, the string will be truncated.
  `[in]` | input | The bitstream containing the compressed string

void StringCompressor::EncodeString | ( | const char * | input,
|  | int | maxCharsToWrite,
|  | RakNet::BitStream * | output
| ) |

  | Writes input to output, compressed. Takes care of the null terminator for you. Parameters:
  `[in]` | input | Pointer to an ASCII string
  `[in]` | maxCharsToWrite | The max number of bytes to write of input. Use 0 to mean no limit.
  `[out]` | output | The bitstream to write the compressed string to

void StringCompressor::GenerateTreeFromStrings | ( | unsigned char * | input,
|  | unsigned | inputLength
| ) |

  | Given an array of strings, such as a chat log, generate the optimal encoding tree for it. This function is optional and if it is not called a default tree will be used instead. Parameters:
  `[in]` | input | An array of bytes which should point to text.
  `[in]` | inputLength | Length of input

StringCompressor * StringCompressor::Instance | ( | void |  | ) | `[static]`

| static function because only static functions can access static members The RakPeer constructor adds a reference to this class, so don't call this until an instance of RakPeer exists, or unless you call AddReference yourself. Returns: the unique instance of the StringCompressor

The documentation for this class was generated from the following files:

- C:/RakNet 2.518/Include/StringCompressor.h
- C:/RakNet 2.518/Source/StringCompressor.cpp