Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes

RakNet::StringTable Class Reference

Writes a string index, instead of the whole string. More...

#include <StringTable.h>

Collaboration diagram for RakNet::StringTable:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ~StringTable ()
void AddString (const char *str, bool copyString)
void EncodeString (const char *input, int maxCharsToWrite, RakNet::BitStream *output)
bool DecodeString (char *output, int maxCharsToWrite, RakNet::BitStream *input)
 StringTable ()
 Private Constructor.

Static Public Member Functions

static StringTableInstance (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.

Protected Member Functions

void LogStringNotFound (const char *strName)

Protected Attributes

DataStructures::OrderedList
< char *, StrAndBool,
StrAndBoolComp > 
orderedStringList

Static Protected Attributes

static StringTableinstance = 0
 Singleton instance.
static int referenceCount = 0

Detailed Description

Writes a string index, instead of the whole string.

This is an even more efficient alternative to StringCompressor in that it writes a single byte from a lookup table and only does compression.
if the string does not already exist in the table.
All string tables must match on all systems - hence you must add all the strings in the same order on all systems.
Furthermore, this must be done before sending packets that use this class, since the strings are ordered for fast lookup. Adding after that time would mess up all the indices so don't do it.
Don't use this class to write strings which were not previously registered with AddString, since you just waste bandwidth then. Use StringCompressor instead.

Definition at line 41 of file StringTable.h.


Constructor & Destructor Documentation

StringTable::~StringTable (  ) 

Definition at line 23 of file StringTable.cpp.

Here is the call graph for this function:

StringTable::StringTable (  ) 

Private Constructor.

Definition at line 18 of file StringTable.cpp.


Member Function Documentation

void StringTable::AddReference ( void   )  [static]

Used so I can allocate and deallocate this singleton at runtime.

Definition at line 33 of file StringTable.cpp.

Here is the caller graph for this function:

void StringTable::AddString ( const char *  str,
bool  copyString 
)

Add a string to the string table.

Parameters:
[in] str The string to add to the string table
[in] copyString true to make a copy of the passed string (takes more memory), false to not do so (if your string is in static memory).

Definition at line 59 of file StringTable.cpp.

Here is the call graph for this function:

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

Writes input to output, uncompressed. Takes care of the null terminator for you. Relies on the StringCompressor class, which is automatically reference counted in the constructor and destructor in RakPeer. You can call the reference counting functions yourself if you wish too.

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

Definition at line 103 of file StringTable.cpp.

Here is the call graph for this function:

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

Writes input to output, compressed. Takes care of the null terminator for you. Relies on the StringCompressor class, which is automatically reference counted in the constructor and destructor in RakPeer. You can call the reference counting functions yourself if you wish too.

Parameters:
[in] input Pointer to an ASCII string
[in] maxCharsToWrite The size of input
[out] output The bitstream to write the compressed string to

Definition at line 84 of file StringTable.cpp.

Here is the call graph for this function:

StringTable * StringTable::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 StringTable

Definition at line 54 of file StringTable.cpp.

void StringTable::LogStringNotFound ( const char *  strName  )  [protected]

Called when you mess up and send a string using this class that was not registered with AddString

Parameters:
[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.

Definition at line 137 of file StringTable.cpp.

Here is the caller graph for this function:

void StringTable::RemoveReference ( void   )  [static]

Used so I can allocate and deallocate this singleton at runtime.

Definition at line 40 of file StringTable.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

StringTable * StringTable::instance = 0 [static, protected]

Singleton instance.

Definition at line 87 of file StringTable.h.

Definition at line 90 of file StringTable.h.

int StringTable::referenceCount = 0 [static, protected]

Definition at line 88 of file StringTable.h.


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