Cuberite
A lightweight, fast and extensible game server for Minecraft
Macros | Functions | Variables
StringUtils.cpp File Reference
#include "Globals.h"
#include "fmt/printf.h"
Include dependency graph for StringUtils.cpp:

Go to the source code of this file.

Macros

#define HEX(x)   static_cast<char>((x) > 9 ? (x) + 'A' - 10 : (x) + '0')
 
#define UNI_MAX_BMP   0x0000FFFF
 
#define UNI_MAX_UTF16   0x0010FFFF
 
#define UNI_SUR_HIGH_START   0xD800
 
#define UNI_SUR_LOW_END   0xDFFF
 
#define UNI_SUR_LOW_START   0xDC00
 

Functions

AString Base64Decode (const AString &a_Base64String)
 Decodes a Base64-encoded string into the raw data. More...
 
AString Base64Encode (const AString &a_Input)
 Encodes a string into Base64. More...
 
AStringCreateHexDump (AString &a_Out, const void *a_Data, size_t a_Size, size_t a_BytesPerLine)
 format binary data this way: 00001234: 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 1234567890abcdef More...
 
AString EscapeString (const AString &a_Message)
 Returns a copy of a_Message with all quotes and backslashes escaped by a backslash. More...
 
int GetBEInt (const char *a_Mem)
 Reads four bytes from the specified memory location and interprets them as BigEndian int. More...
 
short GetBEShort (const char *a_Mem)
 Reads two bytes from the specified memory location and interprets them as BigEndian short. More...
 
unsigned short GetBEUShort (const char *a_Mem)
 Reads two bytes from the specified memory location and interprets them as BigEndian unsigned short. More...
 
static unsigned char HexToDec (char a_HexChar)
 Returns the value of the single hex digit. More...
 
AStringInPlaceLowercase (AString &s)
 In-place string conversion to lowercase. More...
 
AStringInPlaceUppercase (AString &s)
 In-place string conversion to uppercase. More...
 
static bool isLegalUTF8 (const unsigned char *source, int length)
 
bool IsOnlyWhitespace (const AString &a_String)
 Returns true if only whitespace characters are present in the string. More...
 
AStringVector MergeStringVectors (const AStringVector &a_Strings1, const AStringVector &a_Strings2)
 Merges the two vectors of strings, removing duplicate entries from the second vector. More...
 
int NoCaseCompare (const AString &s1, const AString &s2)
 Case-insensitive string comparison. More...
 
AStringPrintf (AString &str, const char *format, fmt::ArgList args)
 Output the formatted text into the string. More...
 
AString Printf (const char *format, fmt::ArgList args)
 Output the formatted text into string Returns the formatted string by value. More...
 
size_t RateCompareString (const AString &s1, const AString &s2)
 Case-insensitive string comparison that returns a rating of equal-ness between [0 - s1.length()]. More...
 
AStringRawBEToUTF8 (const char *a_RawData, size_t a_NumShorts, AString &a_UTF8)
 Converts a stream of BE shorts into UTF-8 string; returns a_UTF8. More...
 
AString ReplaceAllCharOccurrences (const AString &a_String, char a_From, char a_To)
 Replaces all occurrences of char a_From inside a_String with char a_To. More...
 
void ReplaceString (AString &iHayStack, const AString &iNeedle, const AString &iReplaceWith)
 Replaces each occurence of iNeedle in iHayStack with iReplaceWith. More...
 
void SetBEInt (char *a_Mem, Int32 a_Value)
 Writes four bytes to the specified memory location so that they interpret as BigEndian int. More...
 
bool SplitZeroTerminatedStrings (const AString &a_Strings, AStringVector &a_Output)
 Splits a string that has embedded \0 characters, on those characters. More...
 
AString StringJoin (const AStringVector &a_Strings, const AString &a_Delimeter)
 Join a list of strings with the given delimiter between entries. More...
 
AString StringsConcat (const AStringVector &a_Strings, char a_Separator)
 Concatenates the specified strings into a single string, separated by the specified separator character. More...
 
AStringVector StringSplit (const AString &str, const AString &delim)
 Split the string at any of the listed delimiters. More...
 
AStringVector StringSplitAndTrim (const AString &str, const AString &delim)
 Split the string at any of the listed delimiters and trim each value. More...
 
AStringVector StringSplitWithQuotes (const AString &str, const AString &delim)
 Split the string at any of the listed delimiters. More...
 
bool StringToFloat (const AString &a_String, float &a_Num)
 Converts a string into a float. More...
 
AString StripColorCodes (const AString &a_Message)
 Removes all control codes used by MC for colors and styles. More...
 
AString StrToLower (const AString &s)
 Returns a lower-cased copy of the string. More...
 
AString StrToUpper (const AString &s)
 Returns an upper-cased copy of the string. More...
 
AString TrimString (const AString &str)
 Trims whitespace at both ends of the string. More...
 
static int UnBase64 (char c)
 Converts one Hex character in a Base64 encoding into the data value. More...
 
AString UnicodeCharToUtf8 (unsigned a_UnicodeChar)
 Converts a unicode character to its UTF8 representation. More...
 
std::pair< bool, AStringURLDecode (const AString &a_Text)
 URL-Decodes the given string. More...
 
AString URLEncode (const AString &a_Text)
 URL-encodes the given string. More...
 
std::u16string UTF8ToRawBEUTF16 (const AString &a_UTF8)
 Converts a UTF-8 string into a UTF-16 BE string. More...
 

Variables

static const unsigned int offsetsFromUTF8 [6]
 
static const Byte trailingBytesForUTF8 [256]
 

Macro Definition Documentation

#define HEX (   x)    static_cast<char>((x) > 9 ? (x) + 'A' - 10 : (x) + '0')

Definition at line 625 of file StringUtils.cpp.

#define UNI_MAX_BMP   0x0000FFFF

Definition at line 451 of file StringUtils.cpp.

#define UNI_MAX_UTF16   0x0010FFFF

Definition at line 452 of file StringUtils.cpp.

#define UNI_SUR_HIGH_START   0xD800

Definition at line 453 of file StringUtils.cpp.

#define UNI_SUR_LOW_END   0xDFFF

Definition at line 455 of file StringUtils.cpp.

#define UNI_SUR_LOW_START   0xDC00

Definition at line 454 of file StringUtils.cpp.

Function Documentation

AString Base64Decode ( const AString a_Base64String)

Decodes a Base64-encoded string into the raw data.

Definition at line 871 of file StringUtils.cpp.

AString Base64Encode ( const AString a_Input)

Encodes a string into Base64.

Definition at line 907 of file StringUtils.cpp.

AString& CreateHexDump ( AString a_Out,
const void *  a_Data,
size_t  a_Size,
size_t  a_BytesPerLine 
)

format binary data this way: 00001234: 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 1234567890abcdef

Creates a nicely formatted HEX dump of the given memory block.

Definition at line 631 of file StringUtils.cpp.

AString EscapeString ( const AString a_Message)

Returns a copy of a_Message with all quotes and backslashes escaped by a backslash.

Definition at line 670 of file StringUtils.cpp.

int GetBEInt ( const char *  a_Mem)

Reads four bytes from the specified memory location and interprets them as BigEndian int.

Definition at line 976 of file StringUtils.cpp.

short GetBEShort ( const char *  a_Mem)

Reads two bytes from the specified memory location and interprets them as BigEndian short.

Definition at line 956 of file StringUtils.cpp.

unsigned short GetBEUShort ( const char *  a_Mem)

Reads two bytes from the specified memory location and interprets them as BigEndian unsigned short.

Definition at line 966 of file StringUtils.cpp.

static unsigned char HexToDec ( char  a_HexChar)
static

Returns the value of the single hex digit.

Returns 0xff on failure.

Definition at line 21 of file StringUtils.cpp.

AString& InPlaceLowercase ( AString s)

In-place string conversion to lowercase.

Returns the same string object.

Definition at line 245 of file StringUtils.cpp.

AString& InPlaceUppercase ( AString s)

In-place string conversion to uppercase.

Returns the same string object.

Definition at line 255 of file StringUtils.cpp.

static bool isLegalUTF8 ( const unsigned char *  source,
int  length 
)
static

Definition at line 487 of file StringUtils.cpp.

bool IsOnlyWhitespace ( const AString a_String)

Returns true if only whitespace characters are present in the string.

Definition at line 1085 of file StringUtils.cpp.

AStringVector MergeStringVectors ( const AStringVector a_Strings1,
const AStringVector a_Strings2 
)

Merges the two vectors of strings, removing duplicate entries from the second vector.

The resulting vector contains items from a_Strings1 first, then from a_Strings2. The order of items doesn't change, only the duplicates are removed. If a_Strings1 contains duplicates, the result will still contain those duplicates.

Definition at line 1026 of file StringUtils.cpp.

int NoCaseCompare ( const AString s1,
const AString s2 
)

Case-insensitive string comparison.

Returns 0 if the strings are the same, <0 if s1 < s2 and >0 if s1 > s2.

Definition at line 289 of file StringUtils.cpp.

AString& Printf ( AString a_Dst,
const char *  format,
fmt::ArgList  args 
)

Output the formatted text into the string.

Returns a_Dst.

Definition at line 55 of file StringUtils.cpp.

AString Printf ( const char *  format,
fmt::ArgList  args 
)

Output the formatted text into string Returns the formatted string by value.

Definition at line 66 of file StringUtils.cpp.

size_t RateCompareString ( const AString s1,
const AString s2 
)

Case-insensitive string comparison that returns a rating of equal-ness between [0 - s1.length()].

Definition at line 302 of file StringUtils.cpp.

AString& RawBEToUTF8 ( const char *  a_RawData,
size_t  a_NumShorts,
AString a_UTF8 
)

Converts a stream of BE shorts into UTF-8 string; returns a_UTF8.

Definition at line 353 of file StringUtils.cpp.

AString ReplaceAllCharOccurrences ( const AString a_String,
char  a_From,
char  a_To 
)

Replaces all occurrences of char a_From inside a_String with char a_To.

Definition at line 826 of file StringUtils.cpp.

void ReplaceString ( AString iHayStack,
const AString iNeedle,
const AString iReplaceWith 
)

Replaces each occurence of iNeedle in iHayStack with iReplaceWith.

Definition at line 333 of file StringUtils.cpp.

void SetBEInt ( char *  a_Mem,
Int32  a_Value 
)

Writes four bytes to the specified memory location so that they interpret as BigEndian int.

Definition at line 986 of file StringUtils.cpp.

bool SplitZeroTerminatedStrings ( const AString a_Strings,
AStringVector a_Output 
)

Splits a string that has embedded \0 characters, on those characters.

a_Output is first cleared and then each separate string is pushed back into a_Output. Returns true if there are at least two strings in a_Output (there was at least one \0 separator).

Definition at line 998 of file StringUtils.cpp.

AString StringJoin ( const AStringVector a_Strings,
const AString a_Delimiter 
)

Join a list of strings with the given delimiter between entries.

Definition at line 154 of file StringUtils.cpp.

AString StringsConcat ( const AStringVector a_Strings,
char  a_Separator 
)

Concatenates the specified strings into a single string, separated by the specified separator character.

Use StringJoin() if you need multiple separator characters.

Definition at line 1047 of file StringUtils.cpp.

AStringVector StringSplit ( const AString str,
const AString delim 
)

Split the string at any of the listed delimiters.

Return the splitted strings as a stringvector.

Definition at line 76 of file StringUtils.cpp.

AStringVector StringSplitAndTrim ( const AString str,
const AString delim 
)

Split the string at any of the listed delimiters and trim each value.

Returns the splitted strings as a stringvector.

Definition at line 190 of file StringUtils.cpp.

AStringVector StringSplitWithQuotes ( const AString str,
const AString delim 
)

Split the string at any of the listed delimiters.

Keeps quoted content together Resolves issue #490 Return the splitted strings as a stringvector.

Definition at line 97 of file StringUtils.cpp.

bool StringToFloat ( const AString a_String,
float &  a_Num 
)

Converts a string into a float.

Returns false if the conversion fails.

Definition at line 1070 of file StringUtils.cpp.

AString StripColorCodes ( const AString a_Message)

Removes all control codes used by MC for colors and styles.

Definition at line 707 of file StringUtils.cpp.

AString StrToLower ( const AString s)

Returns a lower-cased copy of the string.

Definition at line 265 of file StringUtils.cpp.

AString StrToUpper ( const AString s)

Returns an upper-cased copy of the string.

Definition at line 277 of file StringUtils.cpp.

AString TrimString ( const AString str)

Trims whitespace at both ends of the string.

Returns a trimmed copy of the original string.

Definition at line 211 of file StringUtils.cpp.

static int UnBase64 ( char  c)
inlinestatic

Converts one Hex character in a Base64 encoding into the data value.

Definition at line 838 of file StringUtils.cpp.

AString UnicodeCharToUtf8 ( unsigned  a_UnicodeChar)

Converts a unicode character to its UTF8 representation.

Definition at line 368 of file StringUtils.cpp.

std::pair<bool, AString> URLDecode ( const AString a_String)

URL-Decodes the given string.

The first value specifies whether the decoding was successful. The second value is the decoded string, if successful.

Definition at line 726 of file StringUtils.cpp.

AString URLEncode ( const AString a_Text)

URL-encodes the given string.

Definition at line 796 of file StringUtils.cpp.

std::u16string UTF8ToRawBEUTF16 ( const AString a_String)

Converts a UTF-8 string into a UTF-16 BE string.

Definition at line 526 of file StringUtils.cpp.

Variable Documentation

const unsigned int offsetsFromUTF8[6]
static
Initial value:
=
{
0x00000000UL, 0x00003080UL, 0x000E2080UL,
0x03C82080UL, 0xFA082080UL, 0x82082080UL
}

Definition at line 477 of file StringUtils.cpp.

const Byte trailingBytesForUTF8[256]
static
Initial value:
=
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
}

Definition at line 461 of file StringUtils.cpp.