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);