![]() |
Plasma Engine
2.0
|
This namespace contains functions to convert between different types. More...
Functions | |
PL_FOUNDATION_DLL plResult | StringToInt (plStringView sText, plInt32 &out_iRes, const char **out_pLastParsePosition=nullptr) |
Parses szString and converts it to an integer value. Returns PL_FAILURE if the string contains no parsable integer value. | |
PL_FOUNDATION_DLL plResult | StringToUInt (plStringView sText, plUInt32 &out_uiRes, const char **out_pLastParsePosition=nullptr) |
Same as StringToInt() but expects the string to be a uint32. | |
PL_FOUNDATION_DLL plResult | StringToInt64 (plStringView sText, plInt64 &out_iRes, const char **out_pLastParsePosition=nullptr) |
Same as StringToInt but converts to a 64bit integer value instead. | |
PL_FOUNDATION_DLL plResult | StringToFloat (plStringView sText, double &out_fRes, const char **out_pLastParsePosition=nullptr) |
Parses szString and converts it to a double value. Returns PL_FAILURE if the string contains no parseable floating point value. | |
PL_FOUNDATION_DLL plResult | StringToBool (plStringView sText, bool &out_bRes, const char **out_pLastParsePosition=nullptr) |
Parses szString and checks that the first word it finds starts with a phrase that can be interpreted as a boolean value. | |
PL_FOUNDATION_DLL plUInt32 | ExtractFloatsFromString (plStringView sText, plUInt32 uiNumFloats, float *out_pFloats, const char **out_pLastParsePosition=nullptr) |
Parses szText and tries to find up to uiNumFloats float values to extract. Skips all characters that cannot be interpreted as numbers. | |
PL_FOUNDATION_DLL plInt8 | HexCharacterToIntValue (plUInt32 uiCharacter) |
Converts a hex character ('0', '1', ... '9', 'A'/'a', ... 'F'/'f') to the corresponding int value 0 - 15. | |
PL_FOUNDATION_DLL plResult | ConvertHexStringToUInt32 (plStringView sHex, plUInt32 &out_uiResult) |
Same as ConvertHexStringToUInt() with uiMaxHexCharacters set to 8. | |
PL_FOUNDATION_DLL plResult | ConvertHexStringToUInt64 (plStringView sHex, plUInt64 &out_uiResult) |
Same as ConvertHexStringToUInt() with uiMaxHexCharacters set to 16. | |
PL_FOUNDATION_DLL plResult | ConvertHexStringToUInt (plStringView sHex, plUInt64 &out_uiResult, plUInt32 uiMaxHexCharacters, plUInt32 *pTotalCharactersParsed) |
Converts a hex string (i.e. 0xAABBCCDD) into its uint64 value. | |
PL_FOUNDATION_DLL void | ConvertHexToBinary (plStringView sText, plUInt8 *pBinary, plUInt32 uiBinaryBuffer) |
Converts a HEX string to a binary value. | |
template<typename APPEND_CONTAINER_LAMBDA > | |
void | ConvertBinaryToHex (const void *pBinaryData, plUInt32 uiBytes, APPEND_CONTAINER_LAMBDA append) |
Converts a binary stream to a HEX string. | |
PL_FOUNDATION_DLL plUuid | ConvertStringToUuid (plStringView sText) |
Converts a string that was written with plConversionUtils::ToString(plUuid) back to an plUuid object. | |
PL_FOUNDATION_DLL bool | IsStringUuid (plStringView sText) |
Returns true when the given string is in the exact format "{ 05af8d07-0b38-44a6-8d50-49731ae2625d }" This includes braces, whitespaces and dashes. This is the format that ToString produces. | |
PL_ALWAYS_INLINE const plStringBuilder & | ToString (bool value, plStringBuilder &out_sResult) |
Converts a bool to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plInt8 value, plStringBuilder &out_sResult) |
Converts a 8bit signed integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plUInt8 value, plStringBuilder &out_sResult) |
Converts a 8bit unsigned integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plInt16 value, plStringBuilder &out_sResult) |
Converts a 16bit signed integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plUInt16 value, plStringBuilder &out_sResult) |
Converts a 16bit unsigned integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plInt32 value, plStringBuilder &out_sResult) |
Converts a 32bit signed integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plUInt32 value, plStringBuilder &out_sResult) |
Converts a 32bit unsigned integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plInt64 value, plStringBuilder &out_sResult) |
Converts a 64bit signed integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (plUInt64 value, plStringBuilder &out_sResult) |
Converts a 64bit unsigned integer to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (float value, plStringBuilder &out_sResult) |
Converts a float to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (double value, plStringBuilder &out_sResult) |
Converts a double to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plColor &value, plStringBuilder &out_sResult) |
Converts a color to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plColorGammaUB &value, plStringBuilder &out_sResult) |
Converts a color to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec2 &value, plStringBuilder &out_sResult) |
Converts a vec2 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec3 &value, plStringBuilder &out_sResult) |
Converts a vec3 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec4 &value, plStringBuilder &out_sResult) |
Converts a vec4 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec2I32 &value, plStringBuilder &out_sResult) |
Converts a vec2I32 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec3I32 &value, plStringBuilder &out_sResult) |
Converts a vec3I32 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plVec4I32 &value, plStringBuilder &out_sResult) |
Converts a vec4I32 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plQuat &value, plStringBuilder &out_sResult) |
Converts a quat to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plMat3 &value, plStringBuilder &out_sResult) |
Converts a mat3 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plMat4 &value, plStringBuilder &out_sResult) |
Converts a mat4 to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plTransform &value, plStringBuilder &out_sResult) |
Converts a transform to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plUuid &value, plStringBuilder &out_sResult) |
Converts a Uuid to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plAngle &value, plStringBuilder &out_sResult) |
Converts an angle to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plTime &value, plStringBuilder &out_sResult) |
Converts a time to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plStringView &value, plStringBuilder &out_sResult) |
Converts a plStringView to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plHashedString &value, plStringBuilder &out_sResult) |
Converts a hashed string to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plTempHashedString &value, plStringBuilder &out_sResult) |
Converts a temp hashed string to a string. Will print the hash value since the original string can't be restored from a temp hashed string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plDynamicArray< plVariant > &value, plStringBuilder &out_sResult) |
Converts a plVariantArray to a string. | |
PL_FOUNDATION_DLL const plStringBuilder & | ToString (const plHashTable< plString, plVariant > &value, plStringBuilder &out_sResult) |
Converts a plVariantDictionary to a string. | |
template<typename T > | |
PL_ALWAYS_INLINE const plStringBuilder & | ToString (const T &value, plStringBuilder &out_sResult) |
Fallback ToString implementation for all types that don't have one. | |
PL_FOUNDATION_DLL plColor | GetColorByName (plStringView sText, bool *out_pValidColorName=nullptr) |
Returns the color with the given name. | |
PL_FOUNDATION_DLL plString | GetColorName (const plColor &col) |
The inverse of GetColorByName. | |
This namespace contains functions to convert between different types.
Contains helper functions to convert from strings to numerical values. To convert from numerical values to strings, use plStringBuilder::Format, which provides a rich set of formatting options.
|
inline |
Converts a binary stream to a HEX string.
The result is returned by calling a lambda to append to an output container. The lambda signature must be: void Append(const char* twoChars) The given string will contain exactly two characters and will be zero terminated.
plResult plConversionUtils::ConvertHexStringToUInt | ( | plStringView | sHex, |
plUInt64 & | out_uiResult, | ||
plUInt32 | uiMaxHexCharacters, | ||
plUInt32 * | pTotalCharactersParsed ) |
Converts a hex string (i.e. 0xAABBCCDD) into its uint64 value.
"0x" at the beginning is ignored. Empty strings are interpreted as 'valid', representing the value 0 (returns PL_SUCCESS). If the plStringView is shorter than uiMaxHexCharacters, this is interpreted as a valid HEX value with a smaller value. If the string is longer than uiMaxHexCharacters (after the '0x'), the additional characters are not parsed, at all. If the first uiMaxHexCharacters (after the '0x') contain any non-HEX characters, parsing is interrupted and PL_FAILURE is returned.
void plConversionUtils::ConvertHexToBinary | ( | plStringView | sText, |
plUInt8 * | pBinary, | ||
plUInt32 | uiBinaryBuffer ) |
Converts a HEX string to a binary value.
"0x" or "0X" at the start is allowed and will be skipped. A maximum of uiBinaryBuffer bytes is written to pBinary. If the string contains fewer HEX values than fit into pBinary, the remaining bytes will not be touched, so make sure all data is properly initialized! The hex values are read 2 characters at a time to form a single byte value. If at the end a single character is left (so an odd number of characters in total) that character is ignored entirely! Values are started to be written at pBinary and then the pointer is increased, so the first values in szHEX represent to least significant bytes in pBinary.
plUInt32 plConversionUtils::ExtractFloatsFromString | ( | plStringView | sText, |
plUInt32 | uiNumFloats, | ||
float * | out_pFloats, | ||
const char ** | out_pLastParsePosition = nullptr ) |
Parses szText and tries to find up to uiNumFloats float values to extract. Skips all characters that cannot be interpreted as numbers.
This function can be used to convert string representations of vectors or other more complex numbers. It will parse the string from front to back and convert anything that looks like a number and add it to the given float array. For example a text like '(1, 2, 3)' will result in up to three floats. Since any invalid character is skipped, the parenthesis and commas will be ignored (though they act as delimiters, of course).
szText | The null terminated string to parse. |
uiNumFloats | The maximum number of floats to extract. |
out_pFloats | An array of floats that can hold at least uiNumFloats. The results are written to this array. |
out_LastParsePosition | The position in szText where the function stopped parsing. It will stop either because the end of the string was reached, or uiNumFloats values were successfully extracted. |
plColor plConversionUtils::GetColorByName | ( | plStringView | sText, |
bool * | out_pValidColorName = nullptr ) |
Returns the color with the given name.
Allowed are all predefined color names (case-insensitive), as well as Hex-Values in the form '#RRGGBB' and '#RRGGBBAA' If out_ValidColorName is a valid pointer, it contains true if the color name was known, otherwise false
plInt8 plConversionUtils::HexCharacterToIntValue | ( | plUInt32 | uiCharacter | ) |
Converts a hex character ('0', '1', ... '9', 'A'/'a', ... 'F'/'f') to the corresponding int value 0 - 15.
plResult plConversionUtils::StringToBool | ( | plStringView | sText, |
bool & | out_bRes, | ||
const char ** | out_pLastParsePosition = nullptr ) |
Parses szString and checks that the first word it finds starts with a phrase that can be interpreted as a boolean value.
szString | If szString starts with whitespace characters, they are skipped. PL_SUCCESS is returned (and out_Res is filled with true/false), if the string then starts with any of the following phrases: "true", "false", "on", "off", "yes", "no", "1", "0", "enable", "disable". PL_FAILURE is returned if none of those is encountered (or the string is empty). It does not matter, whether the string continues with some other text, e.g. "nolf" is still interpreted as "no". That means you can pass strings such as "true, a = false" into this function to just parse the next piece of a command line. |
out_Res | If PL_SUCCESS is returned, out_Res contains a valid value. Otherwise it is not modified. That means you can initialize it with a default value that can be used even if PL_FAILURE is returned. |
out_LastParsePosition | On success out_LastParsePosition will contain the address of the character in szString that stopped the parser. This might point to the zero terminator of szString, or to the next character after the phrase "true", "false", "on", "off", etc. which was interpreted as a boolean value. If you want to parse strictly (e.g. you do not want to parse "Nolf" as "no") you can use this result to check that only certain characters were encountered after the boolean phrase (such as '\0' or ',' etc.). |
plResult plConversionUtils::StringToFloat | ( | plStringView | sText, |
double & | out_fRes, | ||
const char ** | out_pLastParsePosition = nullptr ) |
Parses szString and converts it to a double value. Returns PL_FAILURE if the string contains no parseable floating point value.
szString | If szString is nullptr or an empty string or starts with some non-whitespace and non-sign character, PL_FAILURE is returned. All whitespace at the start of the string are skipped. Each minus sign flips the sign of the output value, so –3 will return 3. Plus signs are skipped and have no effect, so -+3 will still return -3. The value string may contain one '.' to separate integer and fractional part. It may also contain an 'e' for scientific notation followed by an integer exponent value. No '.' may follow after an 'e' anymore. Additionally the value may be terminated by an 'f' to indicate a floating point value. The 'f' will be skipped (as can be observed through out_LastParsePosition, and it will terminate further parsing, but it will not affect the precision of the result. Commas (',') are never treated as fractional part separators (as in the German locale). |
out_Res | If PL_SUCCESS is returned, out_Res will contain the result. Otherwise it stays unmodified. The result may have rounding errors, i.e. even though a double may be able to represent the string value exactly, there is no guarantee that out_Res will be 100% identical. If that is required, use the C lib atof() function. |
out_LastParsePosition | On success out_LastParsePosition will contain the address of the character in szString that stopped the parser. This might point to the zero terminator of szString, or to some unexpected character, since for example "5+6" will parse as '5' and '+' will be the position where the parser stopped (returning PL_SUCCESS). If you want to parse strictly (e.g. you do not want to parse "5+6" as "5") you can use this result to check that only certain characters were encountered after the float (e.g. only '\0' or ','). |
plResult plConversionUtils::StringToInt | ( | plStringView | sText, |
plInt32 & | out_iRes, | ||
const char ** | out_pLastParsePosition = nullptr ) |
Parses szString and converts it to an integer value. Returns PL_FAILURE if the string contains no parsable integer value.
szString | If szString is nullptr or an empty string or starts with an some non-whitespace and non-sign character, PL_FAILURE is returned. All whitespace at the start of the string are skipped. Each minus sign flips the sign of the output value, so –3 will return 3. Plus signs are skipped and have no effect, so -+3 will still return -3. |
out_Res | The parsed value is returned in out_Res on success. On failure out_Res is not modified at all, so you can store a default value in it, before calling StringToInt() and always use that value, even without checking for success or failure. |
out_LastParsePosition | On success out_LastParsePosition will contain the address of the character in szString that stopped the parser. This might point to the zero terminator of szString, or to some non-digit character, since for example "5+6" will parse as '5' and '+' will be the position where the parser stopped (returning PL_SUCCESS). If szString is supposed to only contain one full integer and nothing else, then out_LastParsePosition should always point to a zero terminator (otherwise the string was malformed). |
plResult plConversionUtils::StringToUInt | ( | plStringView | sText, |
plUInt32 & | out_uiRes, | ||
const char ** | out_pLastParsePosition = nullptr ) |
Same as StringToInt() but expects the string to be a uint32.
If the parsed value is a valid int but outside the uint32 value range, the function returns PL_FAILURE.