| CRM64Pro GDK v0.17.0 A free cross-platform game development kit built on top of SDL 3.0

Loading...
Searching...
No Matches
Tool
Core modules

## Description

Tool interface providing generic utility methods [v26.04.0].

### Overview

The Tool interface provides a collection of generic and useful utility methods for common operations including hashing, encryption, random number generation, file management and string manipulation.

### Key features

- Hashing algorithms: CRC32 and high-performance xxHash
- Simple encryption: Fast XOR-based buffer encryption/decryption
- Random number generators: Multiple PRNG implementations with different characteristics.
- File utilities: OS-level file management operations
- String utilities: Conversion and manipulation methods

### Hashing algorithms

CRC32 | Standard cyclic redundancy check algorithm
xxHash | High-performance hashing algorithm, approximately 10 times faster than CRC32

### Pseudorandom number generators

Three PRNG implementations are available with different performance and memory trade-offs:

MWC | Multiply-with-carry algorithm. Period: 2^131104. Very fast with 16KB memory footprint
WELL512 | Well Equidistributed Long-period Linear algorithm. Period: 2^512. Fast with only 64 bytes memory footprint
PCG32 | Permuted Congruential Generator. Period: 2^64. Fast, statistically good, and small footprint (16 bytes)

For further information, check the development blog entry on https://www.megastormsystems.com/news/testing-random-number-generators-in-crm64pro about PRNG algorithms.

### Utility methods

Encryption | Fast XOR of memory buffers for simple encryption/decryption
Math | Round values to specified precision
File management | OS-level operations: check file existence, verify file extensions, etc.
String-zero | Null-terminated string manipulation methods
String conversion | String to/from integer and float conversion methods
String/Vector | Vector string to file and string to vector string methods

### Best practices

- Use xxHash instead of CRC32 when performance is critical and cryptographic strength is not required
- Choose WELL512 for memory-constrained scenarios; use MWC when maximum period length is needed
- Use the file management methods for cross-platform file operations
- Prefer the built-in string conversion methods over standard library alternatives for consistency and strict parsing behavior
- Access the interface exclusively through Main::ITool()

Note
  The Tool interface is a singleton, automatically created once Main is instantiated. You can get a reference to this interface using Main::ITool() method.
  The Tool interface is automatically released when Main::Terminate() is called. At this time, any resource still loaded will be released, avoiding resource leaks.

## Classes
class | CRM64Pro::Tool
| Tool class. More...

## Enumerations
enum | CRM64Pro::eToolMBT { CRM64Pro::TMBT_EMPTY = 0 , CRM64Pro::TMBT_ERROR = 1 , CRM64Pro::TMBT_WARNING = 2 , CRM64Pro::TMBT_INFO = 4 , CRM64Pro::TMBT_QUESTION = 8 }
| Tool MessageBox type. More...
enum | CRM64Pro::eMsgBoxButton : Uint32 { }

## Functions
bool | CRM64Pro::Tool::info (Sint32 iMode=0) override
| Request Tool Interface information.
Uint32 | CRM64Pro::Tool::CRC32 (const void *pBuffer, size_t iSize, Uint32 iPreviousCRC32=0)
| CRC32 checksum of a memory buffer.
Uint32 | CRM64Pro::Tool::CRC32 (const string &sFile)
| CRC32 checksum of a file.
Uint32 | CRM64Pro::Tool::xxHash (const void *pBuffer, size_t iSize, Uint32 iSeed)
| xxHash 32bits checksum of a memory buffer.
void * | CRM64Pro::Tool::xxHashInit (Uint32 iSeed)
| Initialize xxHash 32bits for being used in multiple memory buffers.
Sint32 | CRM64Pro::Tool::xxHashUpdate (void *pState, const void *pBuffer, size_t iSize)
| Feed with a new memory buffer the xxHash 32bits.
Uint32 | CRM64Pro::Tool::xxHashDigest (void *pState)
| Get current xxHash 32bits checksum for the accumulative memory buffers.
Sint32 | CRM64Pro::Tool::xxHashEnd (void *pState)
| Finalize xxHash 32bits used in multiple memory buffers.
Uint64 | CRM64Pro::Tool::xxHash3 (const void *pBuffer, size_t iSize, Uint64 iSeed=0)
| xxHash3 64bits checksum of a memory buffer.
void * | CRM64Pro::Tool::xxHash3Init (Uint64 iSeed=0)
| Initialize xxHash3 64bits for being used in multiple memory buffers.
Sint32 | CRM64Pro::Tool::xxHash3Update (void *pState, const void *pBuffer, size_t iSize)
| Feed with a new memory buffer the xxHash3 64bits.
Uint64 | CRM64Pro::Tool::xxHash3Digest (void *pState)
| Get current xxHash3 64bits checksum for the accumulative memory buffers.
Sint32 | CRM64Pro::Tool::xxHash3End (void *pState)
| Finalize xxHash3 64bits used in multiple memory buffers.
Sint32 | CRM64Pro::Tool::XOR (void *pSrc, size_t iSize, Uint8 cKey)
| XOR of a memory buffer by a key(8bits).
bool | CRM64Pro::Tool::decodeBase64 (const string &sInput, string &sOutput, Uint32 iCleanInput=0)
| Decode a base64 string.
bool | CRM64Pro::Tool::decompressZlib (const void *pCompressed, Sint32 iCompressedSize, void *pUncompressed, Sint32 iUncompressedSize)
| Decompress a zlib compressed data block.
void | CRM64Pro::Tool::randSeedMWC (Uint32 iSeed)
| Initializes the Multiply-with-carry(MWC) random number generator with a seed.
Uint32 | CRM64Pro::Tool::randMWC ()
| Generates a random 32bits integer using Multiply-with-carry(MWC) algorithm.
double | CRM64Pro::Tool::randRealMWC ()
| Generates a random 64bits real number using Multiply-with-carry(MWC) algorithm.
void | CRM64Pro::Tool::randSeedWELL (Uint32 iSeed, Uint32 *pSeedTable=nullptr)
| Initializes the WELL512 random number generator with a seed.
Uint32 | CRM64Pro::Tool::randWELL (Uint32 *pSeedState=nullptr, Uint32 *pSeedTable=nullptr)
| Generates a random 32bits integer using WELL512 algorithm.
double | CRM64Pro::Tool::randRealWELL (Uint32 *pSeedState=nullptr, Uint32 *pSeedTable=nullptr)
| Generates a random 64bits real number using WELL512 algorithm.
void | CRM64Pro::Tool::randSeedPCG (Uint64 iSeed, Uint64 iSeq, Uint64 *pState=nullptr, Uint64 *pInc=nullptr)
| Initializes the PCG32 random number generator with a seed and a sequence selector.
Uint32 | CRM64Pro::Tool::randPCG (Uint64 *pState=nullptr, Uint64 *pInc=nullptr)
| Generates a random 32bits integer using PCG32 algorithm.
double | CRM64Pro::Tool::randRealPCG ()
| Generates a random 64bits real number using PCG32 algorithm.
float | CRM64Pro::Tool::round (const float fNum)
| Round a float value.
double | CRM64Pro::Tool::round (const double dNum)
| Round a double value.
bool | CRM64Pro::Tool::dirExists (const string &sPath)
| Check if a directory exists.
bool | CRM64Pro::Tool::dirCreate (const string &sPath)
| Create a directory.
bool | CRM64Pro::Tool::fileExists (const string &sPath)
| Check if a file exists.
bool | CRM64Pro::Tool::fileRemove (const string &sPath)
| Remove a file (with wildcard support).
bool | CRM64Pro::Tool::fileGetAbsolutePath (const string &sPath, string &sAbsolutePath)
| Get the absolute path of a given relative path.
bool | CRM64Pro::Tool::fileGetExePath (string &sPath)
| Get the executable path.
bool | CRM64Pro::Tool::fileGetName (const string &sPath, string &sFileName)
| Get the filename.
bool | CRM64Pro::Tool::fileGetDir (const string &sPath, string &sDirName)
| Get the directory.
bool | CRM64Pro::Tool::fileGetExtension (const string &sPath, string &sExtensionName)
| Get the extension.
bool | CRM64Pro::Tool::fileCheckExtension (const string &sPath, const string &sExt)
| Check if a filename contains a given extension.
bool | CRM64Pro::Tool::fileOpenDialog (const string &sTitle, const char *szFilter, string &sSelectedFile)
| Create a native file open dialog.
bool | CRM64Pro::Tool::fileSaveDialog (const string &sTitle, const char *szFilter, string &sSelectedFile)
| Create a native file save dialog.
eMsgBoxButton | CRM64Pro::Tool::messageBox (const string &sTitle, const string &sMsg, eMsgBoxButton eMBB=TMBB_OK, eToolMBT eTMBT=TMBT_INFO, Sint32 iTTL=0, Sint32 idCustomPanel=-1, Sint32 idScreen=-1)
| Create a messagebox.
bool | CRM64Pro::Tool::szCopy (char *szDst, const char *szSrc, size_t iSize)
| Copy a string-zero avoiding buffer overflow.
bool | CRM64Pro::Tool::getDateStamp (string &sString)
| Get current date+time stamp.
bool | CRM64Pro::Tool::strCompare (const string &sOne, const string &sTwo)
| Case insensitive string comparation.
bool | CRM64Pro::Tool::strToLowerCase (string &sString)
| Convert the string to lower case.
bool | CRM64Pro::Tool::strToUpperCase (string &sString)
| Convert the string to upper case.
bool | CRM64Pro::Tool::strTovStr (const string &sString, const string &sSplit, vector< string > &vString)
| Split a string into a vector of string given a split string.
Sint32 | CRM64Pro::Tool::strDecToInt (const string &sString)
| Convert a given string with a number in decimal format to a Sint32 number.
bool | CRM64Pro::Tool::intToStrDec (Sint32 iNum, string &sString)
| Convert a 32bits signed integer to a string in decimal format.
bool | CRM64Pro::Tool::strToFloat (const string &sString, float &fValue)
| Convert a given string with a floating-point number to a float.
bool | CRM64Pro::Tool::floatToStr (float fNum, string &sString)
| Convert a float to a string.
Sint32 | CRM64Pro::Tool::strHexToInt (const string &sString)
| Convert a given string with a number in hexdecimal format to a Sint32 number.
bool | CRM64Pro::Tool::intToStrHex (Sint32 iNum, string &sString)
| Convert a 32bits signed integer to a string in hexadecimal format.
bool | CRM64Pro::Tool::vStrToFile (const vector< string > &vString, const string &sFileName)
| Save a vector<string> to a filename.
bool | CRM64Pro::Tool::fileTovStr (vector< string > &vString, const string &sFileName)
| Load lines of a filename into a vector<string>.

## Enumeration Type Documentation

## ◆ eToolMBT

enum CRM64Pro::eToolMBT

Tool MessageBox type.

Enumerator
TMBT_EMPTY | MessageBox type empty. 'eTMBT' parameter in Tools:messageBox().
TMBT_ERROR | MessageBox type error. 'eTMBT' parameter in Tools::messageBox().
TMBT_WARNING | MessageBox type warning. 'eTMBT' parameter in Tools::messageBox().
TMBT_INFO | MessageBox type information. 'eTMBT' parameter in Tools::messageBox().
TMBT_QUESTION | MessageBox type question. 'eTMBT' parameter in Tools::messageBox().

## ◆ eMsgBoxButton

enum CRM64Pro::eMsgBoxButton : Uint32

MessageBox Button selection. 'iButtons' parameter in Tools::messageBox().

Enumerator
TMBB_OK | MessageBox Button OK. 'iButtons' parameter in Tools::messageBox().
TMBB_CANCEL | MessageBox Button Cancel. 'iButtons' parameter in Tools::messageBox().
TMBB_YES | MessageBox Button Yes. 'iButtons' parameter in Tools::messageBox().
TMBB_NO | MessageBox Button No. 'iButtons' parameter in Tools::messageBox().

## Function Documentation

## ◆ info()

bool CRM64Pro::Tool::info | ( | Sint32 | iMode = 0 | ) |
| override

Request Tool Interface information.

Writes information to the default log.

Parameters

  iMode | unused for the time being.

Returns
  true on success or false on failure.

## ◆ CRC32() [1/2]

Uint32 CRM64Pro::Tool::CRC32 | ( | const void * | pBuffer,
|  | size_t | iSize,
|  | Uint32 | iPreviousCRC32 = 0 )

CRC32 checksum of a memory buffer.

This algorithm takes approximately 8 CPU cycles per byte.

Parameters

  pBuffer | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.
  iPreviousCRC32 | supports rolling mechanism: if you already have a buffer and its CRC32, you can append new data and calculate the updated CRC32 using your original value as seed. Default 0.

Returns
  CRC32 checksum of the memory buffer.

## ◆ CRC32() [2/2]

Uint32 CRM64Pro::Tool::CRC32 | ( | const string & | sFile | ) |

CRC32 checksum of a file.

Internally, it calls to memory buffer CRC32() method.

Parameters

  sFile | string containing the [directory]+filename+[extension].

Returns
  CRC32 checksum of the file.

## ◆ xxHash()

Uint32 CRM64Pro::Tool::xxHash | ( | const void * | pBuffer,
|  | size_t | iSize,
|  | Uint32 | iSeed )

xxHash 32bits checksum of a memory buffer.

This algorithm is very fast(16x faster than CRC32) and close to the memory bandwidth limit.

Parameters

  pBuffer | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.
  iSeed | can be used to alter the result predictably.

Returns
  xxHash 32bits checksum of the memory buffer.

## ◆ xxHashInit()

void * CRM64Pro::Tool::xxHashInit | ( | Uint32 | iSeed | ) |

Initialize xxHash 32bits for being used in multiple memory buffers.

Parameters

  iSeed | can be used to alter the result predictably.

Returns
  a void* state which hold internal variables, do not modify it!.

Note
  This state must be destroyed calling ton xxHashEnd()

## ◆ xxHashUpdate()

Sint32 CRM64Pro::Tool::xxHashUpdate | ( | void * | pState,
|  | const void * | pBuffer,
|  | size_t | iSize )

Feed with a new memory buffer the xxHash 32bits.

Parameters

  pState | a void* state previously created by xxHashInit().
  pBuffer | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.

Returns
  0 on success, or a negative error code on failure.

## ◆ xxHashDigest()

Uint32 CRM64Pro::Tool::xxHashDigest | ( | void * | pState | ) |

Get current xxHash 32bits checksum for the accumulative memory buffers.

Parameters

  pState | a void* state created by xxHashInit() and used on xxHashUpdate().

Returns
  xxHash 32bits checksum of the memory buffers.

## ◆ xxHashEnd()

Sint32 CRM64Pro::Tool::xxHashEnd | ( | void * | pState | ) |

Finalize xxHash 32bits used in multiple memory buffers.

Parameters

  pState | a void* state created by xxHashInit().

Returns
  0 on success, or a negative error code on failure.

## ◆ xxHash3()

Uint64 CRM64Pro::Tool::xxHash3 | ( | const void * | pBuffer,
|  | size_t | iSize,
|  | Uint64 | iSeed = 0 )

xxHash3 64bits checksum of a memory buffer.

This algorithm is very fast and returns a 64-bit hash.

Parameters

  pBuffer | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.
  iSeed | can be used to alter the result predictably. Default 0.

Returns
  xxHash3 64bits checksum of the memory buffer.

## ◆ xxHash3Init()

void * CRM64Pro::Tool::xxHash3Init | ( | Uint64 | iSeed = 0 | ) |

Initialize xxHash3 64bits for being used in multiple memory buffers.

Parameters

  iSeed | can be used to alter the result predictably. Default 0.

Returns
  a void* state which hold internal variables, do not modify it!.

Note
  This state must be destroyed calling to xxHash3End()

## ◆ xxHash3Update()

Sint32 CRM64Pro::Tool::xxHash3Update | ( | void * | pState,
|  | const void * | pBuffer,
|  | size_t | iSize )

Feed with a new memory buffer the xxHash3 64bits.

Parameters

  pState | a void* state previously created by xxHash3Init().
  pBuffer | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.

Returns
  0 on success, or a negative error code on failure.

## ◆ xxHash3Digest()

Uint64 CRM64Pro::Tool::xxHash3Digest | ( | void * | pState | ) |

Get current xxHash3 64bits checksum for the accumulative memory buffers.

Parameters

  pState | a void* state created by xxHash3Init() and used on xxHash3Update().

Returns
  xxHash3 64bits checksum of the memory buffers.

## ◆ xxHash3End()

Sint32 CRM64Pro::Tool::xxHash3End | ( | void * | pState | ) |

Finalize xxHash3 64bits used in multiple memory buffers.

Parameters

  pState | a void* state created by xxHash3Init().

Returns
  0 on success, or a negative error code on failure.

## ◆ XOR()

Sint32 CRM64Pro::Tool::XOR | ( | void * | pSrc,
|  | size_t | iSize,
|  | Uint8 | cKey )

XOR of a memory buffer by a key(8bits).

It can be used for simple encryption/decryption tasks.

Parameters

  pSrc | pointer to the memory buffer.
  iSize | size in bytes of the memory buffer.
  cKey | unsigned char value representing the key.

Returns
  0 on success, or a negative error code on failure.

## ◆ decodeBase64()

bool CRM64Pro::Tool::decodeBase64 | ( | const string & | sInput,
|  | string & | sOutput,
|  | Uint32 | iCleanInput = 0 )

Decode a base64 string.

Parameters

  sInput | string containing the base64 encoded string.
  sOutput | string containing the decoded base64 string.
  iCleanInput | set to 1 for cleaning the sInput string of non base64 characters before to try to decode it. By default it is set to 0.

Returns
  true on success or false on failure.

## ◆ decompressZlib()

bool CRM64Pro::Tool::decompressZlib | ( | const void * | pCompressed,
|  | Sint32 | iCompressedSize,
|  | void * | pUncompressed,
|  | Sint32 | iUncompressedSize )

Decompress a zlib compressed data block.

Parameters

  pCompressed | pointer to compressed data.
  iCompressedSize | compressed data buffer size.
  pUncompressed | pointer to the decompressed data. You must create this buffer and once done with it, free it.
  iUncompressedSize | uncompressed data buffer size.

Returns
  true on success or false on failure.

## ◆ randSeedMWC()

void CRM64Pro::Tool::randSeedMWC | ( | Uint32 | iSeed | ) |

Initializes the Multiply-with-carry(MWC) random number generator with a seed.

Parameters

  iSeed | any Uint32 from [0,4294967295] interval.

## ◆ randMWC()

Uint32 CRM64Pro::Tool::randMWC | ( |  | ) |

Generates a random 32bits integer using Multiply-with-carry(MWC) algorithm.

Returns
  random integer from [0,4294967295] interval.

## ◆ randRealMWC()

double CRM64Pro::Tool::randRealMWC | ( |  | ) |

Generates a random 64bits real number using Multiply-with-carry(MWC) algorithm.

Returns
  random real from [0,1] interval.

## ◆ randSeedWELL()

void CRM64Pro::Tool::randSeedWELL | ( | Uint32 | iSeed,
|  | Uint32 * | pSeedTable = nullptr )

Initializes the WELL512 random number generator with a seed.

Parameters

  iSeed | any Uint32 from [0,4294967295] interval.
  pSeedTable | pointer to an array of 16 Uint32 for storing the seed output. Default nullptr uses an internal array.

## ◆ randWELL()

Uint32 CRM64Pro::Tool::randWELL | ( | Uint32 * | pSeedState = nullptr,
|  | Uint32 * | pSeedTable = nullptr )

Generates a random 32bits integer using WELL512 algorithm.

Parameters

  pSeedState | pointer to an Uint32 containing the WELL512 algorithm state. Default nullptr uses internal state.
  pSeedTable | pointer to an array of 16 Uint32 containing the seed current status. Default nullptr uses internal array.

Returns
  random integer from [0,4294967295] interval.

## ◆ randRealWELL()

double CRM64Pro::Tool::randRealWELL | ( | Uint32 * | pSeedState = nullptr,
|  | Uint32 * | pSeedTable = nullptr )

Generates a random 64bits real number using WELL512 algorithm.

Parameters

  pSeedState | pointer to an Uint32 containing the WELL512 algorithm state. Default nullptr uses internal state.
  pSeedTable | pointer to an array of 16 Uint32 containing the seed current status. Default nullptr uses internal array.

Returns
  random real from [0,1] interval.

## ◆ randSeedPCG()

void CRM64Pro::Tool::randSeedPCG | ( | Uint64 | iSeed,
|  | Uint64 | iSeq,
|  | Uint64 * | pState = nullptr,
|  | Uint64 * | pInc = nullptr )

Initializes the PCG32 random number generator with a seed and a sequence selector.

Parameters

  iSeed | 64-bit seed for the state.
  iSeq | 64-bit sequence selector (stream id).
  pState | optional caller-managed generator state. Use nullptr to operate on the internal shared generator state.
  pInc | optional caller-managed generator increment. Use nullptr to operate on the internal shared generator state.

## ◆ randPCG()

Uint32 CRM64Pro::Tool::randPCG | ( | Uint64 * | pState = nullptr,
|  | Uint64 * | pInc = nullptr )

Generates a random 32bits integer using PCG32 algorithm.

Parameters

  pState | optional caller-managed generator state. Use nullptr to operate on the internal shared generator state.
  pInc | optional caller-managed generator increment. Use nullptr to operate on the internal shared generator state.

Returns
  random integer from [0,4294967295] interval.

## ◆ randRealPCG()

double CRM64Pro::Tool::randRealPCG | ( |  | ) |

Generates a random 64bits real number using PCG32 algorithm.

Returns
  random real from [0,1] interval.

## ◆ round() [1/2]

float CRM64Pro::Tool::round | ( | const float | fNum | ) |

Round a float value.

Parameters

  fNum | float to be rounded

Returns
  rounded float value

## ◆ round() [2/2]

double CRM64Pro::Tool::round | ( | const double | dNum | ) |

Round a double value.

Parameters

  dNum | double to be rounded

Returns
  rounded double value

## ◆ dirExists()

bool CRM64Pro::Tool::dirExists | ( | const string & | sPath | ) |

Check if a directory exists.

Parameters

  sPath | string containing the directory. Directory separators '\' and '/' are supported.

Returns
  true on success (directory exists) or false on failure.

## ◆ dirCreate()

bool CRM64Pro::Tool::dirCreate | ( | const string & | sPath | ) |

Create a directory.

Extracts the directory, discards the filename and extension, and creates the directory. Directory separators '\' and '/' are supported.

Parameters

  sPath | string containing the directory (e.g. myDir/, myDir/mySubDir).

Returns
  true on success, or false on failure.

Note
  If the directory already exists, returns success without doing anything.

## ◆ fileExists()

bool CRM64Pro::Tool::fileExists | ( | const string & | sPath | ) |

Check if a file exists.

Parameters

  sPath | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported.

Returns
  true on success (file exists) or false on failure.

## ◆ fileRemove()

bool CRM64Pro::Tool::fileRemove | ( | const string & | sPath | ) |

Remove a file (with wildcard support).

Parameters

  sPath | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported. Wildcards '*' and '?' are supported.

Returns
  true on success, or false on failure.

## ◆ fileGetAbsolutePath()

bool CRM64Pro::Tool::fileGetAbsolutePath | ( | const string & | sPath,
|  | string & | sAbsolutePath )

Get the absolute path of a given relative path.

Parameters

  sPath | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported.
  sAbsolutePath | a string variable with the absolute path. Not modified on error.

Returns
  true on success, or false on failure.

## ◆ fileGetExePath()

bool CRM64Pro::Tool::fileGetExePath | ( | string & | sPath | ) |

Get the executable path.

Parameters

  sPath | a string variable containing the full executable path. Will not be modified on error.

Returns
  true on success, or false on failure.

## ◆ fileGetName()

bool CRM64Pro::Tool::fileGetName | ( | const string & | sPath,
|  | string & | sFileName )

Get the filename.

Removes the directory and extension if present and gets only the filename.

Parameters

  sPath | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported.
  sFileName | a string variable. Not modified on error.

Returns
  true on success, or false on failure.

## ◆ fileGetDir()

bool CRM64Pro::Tool::fileGetDir | ( | const string & | sPath,
|  | string & | sDirName )

Get the directory.

Removes the name and extension if present and gets only the directory.

Parameters

  sPath | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported.
  sDirName | a string variable. Not modified on error.

Returns
  true on success, or false on failure.

## ◆ fileGetExtension()

bool CRM64Pro::Tool::fileGetExtension | ( | const string & | sPath,
|  | string & | sExtensionName )

Get the extension.

It removes the directory and name if present and get only the extension.

Parameters

  sPath | string containing the [directory]+filename+[extension].
  sExtensionName | a string variable. Will not be modified on error.

Returns
  true on success, or false on failure.

## ◆ fileCheckExtension()

bool CRM64Pro::Tool::fileCheckExtension | ( | const string & | sPath,
|  | const string & | sExt )

Check if a filename contains a given extension.

Parameters

  sPath | string containing the [directory]+filename+[extension].
  sExt | the extension to be checked.

Returns
  true on success(file contains given extension) or false on failure.

## ◆ fileOpenDialog()

bool CRM64Pro::Tool::fileOpenDialog | ( | const string & | sTitle,
|  | const char * | szFilter,
|  | string & | sSelectedFile )

Create a native file open dialog.

Parameters

  sTitle | string containing dialog title.
  szFilter | pointer to a buffer containing pairs of nullptr-terminated filter strings. First string in each pair is a display string (e.g. "PNG Files"), second specifies the filter pattern (e.g. "*.png").
  sSelectedFile | string to contain the directory+filename+extension of the selected file.

Returns
  true on success (sSelectedFile contains the selected file) or false on failure.

## ◆ fileSaveDialog()

bool CRM64Pro::Tool::fileSaveDialog | ( | const string & | sTitle,
|  | const char * | szFilter,
|  | string & | sSelectedFile )

Create a native file save dialog.

Parameters

  sTitle | string containing dialog title.
  szFilter | pointer to a buffer containing pairs of nullptr-terminated filter strings. First string in each pair is a display string (e.g. "PNG Files"), second specifies the filter pattern (e.g. "*.png").
  sSelectedFile | string to contain the directory+filename+extension of the selected file.

Returns
  true on success (sSelectedFile contains the selected file) or false on failure.

## ◆ messageBox()

eMsgBoxButton CRM64Pro::Tool::messageBox | ( | const string & | sTitle,
|  | const string & | sMsg,
|  | eMsgBoxButton | eMBB = TMBB_OK,
|  | eToolMBT | eTMBT = TMBT_INFO,
|  | Sint32 | iTTL = 0,
|  | Sint32 | idCustomPanel = -1,
|  | Sint32 | idScreen = -1 )

Create a messagebox.

Parameters

  sTitle | string containing the messagebox title. Can be empty.
  sMsg | string containing the messagebox body text. Can be empty.
  eMBB | Check ::TMBB_OK, ::TMBB_CANCEL, ::TMBB_YES and ::TMBB_NO. Can be OR'ed. Default ::TMBB_OK.
  eTMBT | messagebox type. Check ::eToolMBT enum. Default ::TMBT_INFO.
  iTTL | Time to live in milliseconds. 0 (default) for modal, otherwise modeless with specified duration.
  idCustomPanel | custom panel id for the messagebox. Default -1 uses internal messagebox panel.
  idScreen | screen id for the panel when using internal messagebox. Default -1 uses "default" screen.

Returns
  ::TMBB_NONE on failure or no selection, otherwise the selected ::eMsgBoxButton.

## ◆ szCopy()

bool CRM64Pro::Tool::szCopy | ( | char * | szDst,
|  | const char * | szSrc,
|  | size_t | iSize )

Copy a string-zero avoiding buffer overflow.

It avoids buffer overflow and always appends a nullptr string termination.

Parameters

  szDst | destination char array of at least iSize size.
  szSrc | source char array of at least iSize size.
  iSize | maximum size of characters to copy.

Returns
  true on success, or false on failure.

## ◆ getDateStamp()

bool CRM64Pro::Tool::getDateStamp | ( | string & | sString | ) |

Get current date+time stamp.

Parameters

  sString | string reference with the date+time stamp.

Returns
  true on success, or false on failure.

## ◆ strCompare()

bool CRM64Pro::Tool::strCompare | ( | const string & | sOne,
|  | const string & | sTwo )

Case insensitive string comparation.

Parameters

  sOne | string one.
  sTwo | string two.

Returns
  false when the strings are different and true if they are equal.

## ◆ strToLowerCase()

bool CRM64Pro::Tool::strToLowerCase | ( | string & | sString | ) |

Convert the string to lower case.

Parameters

  sString | string to be converted.

Returns
  true on success, or false on failure.

## ◆ strToUpperCase()

bool CRM64Pro::Tool::strToUpperCase | ( | string & | sString | ) |

Convert the string to upper case.

Parameters

  sString | string to be converted.

Returns
  true on success, or false on failure.

## ◆ strTovStr()

bool CRM64Pro::Tool::strTovStr | ( | const string & | sString,
|  | const string & | sSplit,
|  | vector< string > & | vString )

Split a string into a vector of string given a split string.

Parameters

  sString | original string to be split.
  sSplit | split string.
  vString | vector<string> to store split strings.

Returns
  true on success, or false on failure.

## ◆ strDecToInt()

Sint32 CRM64Pro::Tool::strDecToInt | ( | const string & | sString | ) |

Convert a given string with a number in decimal format to a Sint32 number.

Parameters

  sString | string containing the number in decimal format.

Returns
  the converted number.

Note
  This method is very fast. Implementation by DarthGizka (https://stackoverflow.com/questions/16826422/c-most-efficient-way-to-convert-string-to-int-faster-than-atoi)

## ◆ intToStrDec()

bool CRM64Pro::Tool::intToStrDec | ( | Sint32 | iNum,
|  | string & | sString )

Convert a 32bits signed integer to a string in decimal format.

Parameters

  iNum | integer number.
  sString | string to store the result.

Returns
  true on success, or false on failure.

Note
  This method is very fast. Implementation by Arturo Martin-de-Nicolas (https://github.com/amdn/itoa_ljust).

## ◆ strToFloat()

bool CRM64Pro::Tool::strToFloat | ( | const string & | sString,
|  | float & | fValue )

Convert a given string with a floating-point number to a float.

Parameters

  sString | string containing the floating-point number.
  fValue | float to store the converted result.

Returns
  true on success, or false on failure.

Note
  Parsing is strict: the whole input must be consumed.

## ◆ floatToStr()

bool CRM64Pro::Tool::floatToStr | ( | float | fNum,
|  | string & | sString )

Convert a float to a string.

Parameters

  fNum | float number.
  sString | string to store the result.

Returns
  true on success, or false on failure.

## ◆ strHexToInt()

Sint32 CRM64Pro::Tool::strHexToInt | ( | const string & | sString | ) |

Convert a given string with a number in hexdecimal format to a Sint32 number.

Parameters

  sString | string containing the number in hexadecimal format. It supports string starting with '0x', '#' or without any prefix.

Returns
  the converted number.

## ◆ intToStrHex()

bool CRM64Pro::Tool::intToStrHex | ( | Sint32 | iNum,
|  | string & | sString )

Convert a 32bits signed integer to a string in hexadecimal format.

Parameters

  iNum | integer number.
  sString | string to store the result.

Returns
  true on success, or false on failure.

## ◆ vStrToFile()

bool CRM64Pro::Tool::vStrToFile | ( | const vector< string > & | vString,
|  | const string & | sFileName )

Save a vector<string> to a filename.

Parameters

  vString | vector<string> to be dumped into an external filename. Each string will be saved on a separate line.
  sFileName | a string variable with the output file name.

Returns
  true on success, or false on failure.

## ◆ fileTovStr()

bool CRM64Pro::Tool::fileTovStr | ( | vector< string > & | vString,
|  | const string & | sFileName )

Load lines of a filename into a vector<string>.

Parameters

  vString | vector<string> to be loaded with lines of the filename.
  sFileName | a string variable with the input file name.

Returns
  true on success, or false on failure.