16 #ifndef __RAK_STRING_H 
   17 #define __RAK_STRING_H  
   51     RakString(
const unsigned char *format, ...);
 
   57     operator const char* () 
const {
return sharedString->c_str;}
 
   60     const char *
C_String(
void)
 const {
return sharedString->c_str;}
 
   68     RakString& operator = ( 
const char *str );
 
   70     RakString& operator = ( 
const unsigned char *str );
 
   71     RakString& operator = ( 
char unsigned *str );
 
   76     RakString& operator += ( 
const char *str );
 
   78     RakString& operator += ( 
const unsigned char *str );
 
   79     RakString& operator += ( 
char unsigned *str );
 
   83     unsigned char operator[] ( 
const unsigned int position ) 
const;
 
   88     WCHAR * ToWideChar(
void);
 
   89     void DeallocWideChar(WCHAR * w);
 
   91     void FromWideChar(
const wchar_t *source);
 
  101     size_t Find(
const char *stringToFind,
size_t pos = 0 );
 
  104     bool operator==(
const RakString &rhs) 
const;
 
  105     bool operator==(
const char *str) 
const;
 
  106     bool operator==(
char *str) 
const;
 
  109     bool operator < ( 
const RakString& right ) 
const;
 
  110     bool operator <= ( 
const RakString& right ) 
const;
 
  111     bool operator > ( 
const RakString& right ) 
const;
 
  112     bool operator >= ( 
const RakString& right ) 
const;
 
  115     bool operator!=(
const RakString &rhs) 
const;
 
  116     bool operator!=(
const char *str) 
const;
 
  117     bool operator!=(
char *str) 
const;
 
  120     const char * ToLower(
void);
 
  123     const char * ToUpper(
void);
 
  126     void Set(
const char *format, ...);
 
  135     RakString Assign(
const char *str,
size_t pos, 
size_t n );
 
  138     bool IsEmpty(
void) 
const;
 
  141     size_t GetLength(
void) 
const;
 
  142     size_t GetLengthUTF8(
void) 
const;
 
  145     void Replace(
unsigned index, 
unsigned count, 
unsigned char c);
 
  148     void SetChar( 
unsigned index, 
unsigned char c );
 
  154     void Truncate(
unsigned int length);
 
  155     void TruncateUTF8(
unsigned int length);
 
  158     RakString SubStr(
unsigned int index, 
size_t count) 
const;
 
  161     void Erase(
unsigned int index, 
unsigned int count);
 
  164     void TerminateAtFirstCharacter(
char c);
 
  166     void TerminateAtLastCharacter(
char c);
 
  168     void StartAfterFirstCharacter(
char c);
 
  169     void StartAfterLastCharacter(
char c);
 
  172     int GetCharacterCount(
char c);
 
  175     void RemoveCharacter(
char c);
 
  182     static unsigned long ToInteger(
const char *str);
 
  183     static unsigned long ToInteger(
const RakString &rs);
 
  189     static int ReadIntFromSubstring(
const char *str, 
size_t pos, 
size_t n);
 
  192     void AppendBytes(
const char *bytes, 
size_t count);
 
  198     int StrNCmp(
const RakString &rhs, 
size_t num) 
const;
 
  210     void FPrintf(FILE *fp);
 
  213     bool IPAddressMatch(
const char *IP);
 
  216     bool ContainsNonprintableExceptSpaces(
void) 
const;
 
  219     bool IsEmailAddress(
void) 
const;
 
  238     static SLNet::RakString FormatForPOST(
const char* uri, 
const char* contentType, 
const char* body, 
const char* extraHeaders=
"");
 
  239     static SLNet::RakString FormatForPUT(
const char* uri, 
const char* contentType, 
const char* body, 
const char* extraHeaders=
"");
 
  244     static SLNet::RakString FormatForGET(
const char* uri, 
const char* extraHeaders=
"");
 
  249     static SLNet::RakString FormatForDELETE(
const char* uri, 
const char* extraHeaders=
"");
 
  256     static void FreeMemory(
void);
 
  258     static void FreeMemoryNoMutex(
void);
 
  265     static void Serialize(
const char *str, 
BitStream *bs);
 
  272     void SerializeCompressed(
BitStream *bs, 
uint8_t languageId=0, 
bool writeLanguageId=
false) 
const;
 
  275     static void SerializeCompressed(
const char *str, 
BitStream *bs, 
uint8_t languageId=0, 
bool writeLanguageId=
false);
 
  283     static bool Deserialize(
char *str, 
BitStream *bs);
 
  290     bool DeserializeCompressed(
BitStream *bs, 
bool readLanguageId=
false);
 
  293     static bool DeserializeCompressed(
char *str, 
BitStream *bs, 
bool readLanguageId=
false);
 
  295     static const char *ToString(
int64_t i);
 
  296     static const char *ToString(
uint64_t i);
 
  299     static size_t GetSizeToAllocate(
size_t bytes)
 
  301         const size_t smallStringSize = 128-
sizeof(
unsigned int)-
sizeof(
size_t)-
sizeof(
char*)*2;
 
  302         if (bytes<=smallStringSize)
 
  303             return smallStringSize;
 
  316         char smallString[128-
sizeof(
unsigned int)-
sizeof(
size_t)-
sizeof(
char*)*2];      
 
  338     static void LockMutex(
void);
 
  339     static void UnlockMutex(
void);
 
  342     static SLNet::RakString FormatForPUTOrPost(
const char* type, 
const char* uri, 
const char* contentType, 
const char* body, 
const char* extraHeaders);
 
  343     void Allocate(
size_t len);
 
  344     void Assign(
const char *str);
 
  345     void Assign(
const char *str, va_list ap);
 
  349     unsigned char ToLower(
unsigned char c);
 
  350     unsigned char ToUpper(
unsigned char c);
 
  351     void Realloc(
SharedString *inSharedString, 
size_t bytes);