mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
127 lines
4.9 KiB
C++
127 lines
4.9 KiB
C++
#pragma once
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Internals
|
|
BOOL IsBadReadPtrV2(void* ptr);
|
|
BOOL FileExists(LPCTSTR szPath);
|
|
int CreateDirHierarchy(const char* filePath);
|
|
bool IsDirectory(const char* path);
|
|
bool FileEmpty(ifstream& pFile);
|
|
MODULEINFO GetModuleInfo(const char* szModule);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Debug
|
|
void DbgPrint(LPCSTR sFormat, ...);
|
|
void PrintLastError(void);
|
|
void HexDump(const char* szHeader, const char* szLogger, const void* pData, size_t nSize);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Char
|
|
char* StripTabsAndReturns(const char* pInBuffer, char* pOutBuffer, int nOutBufferSize);
|
|
char* StripQuotes(const char* pInBuffer, char* pOutBuffer, int nOutBufferSize);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// String
|
|
bool HasPartial(const string& svInput, const string& svPartial);
|
|
bool HasExtension(const string& svInput, const string& svExtension);
|
|
string GetExtension(const string& svInput, bool bReturnOriginal = false, bool bKeepDelimiter = false);
|
|
string RemoveExtension(const string& svInput);
|
|
|
|
bool HasFileName(const string& svInput, const string& svFileName);
|
|
string GetFileName(const string& svInput, bool bRemoveExtension = false, bool bWindows = false);
|
|
string RemoveFileName(const string& svInput, bool bWindows = false);
|
|
|
|
string CreateTimedFileName();
|
|
string CreateUUID();
|
|
void CreateDirectories(string svInput, string* pszOutput = nullptr, bool bWindows = false);
|
|
|
|
void AppendSlash(string& svInput, const char separator = '\\');
|
|
|
|
string ConvertToWinPath(const string& svInput);
|
|
string ConvertToUnixPath(const string& svInput);
|
|
|
|
bool IsEqualNoCase(const string& svInput, const string& svSecond);
|
|
bool IsValidBase64(const string& svInput, string* psvOutput = nullptr);
|
|
|
|
string Base64Encode(const string& svInput);
|
|
string Base64Decode(const string& svInput);
|
|
|
|
string UTF8Encode(const wstring& wsvInput);
|
|
//string UTF8Decode(const string& svInput);
|
|
|
|
bool StringIsDigit(const string& svInput);
|
|
bool CompareStringAlphabetically(const string& svA, const string& svB);
|
|
bool CompareStringLexicographically(const string& svA, const string& svB);
|
|
|
|
bool StringReplace(string& svInput, const string& svFrom, const string& svTo);
|
|
string StringReplaceC(const string& svInput, const string& svFrom, const string& svTo);
|
|
string StringEscape(const string& svInput);
|
|
string StringUnescape(const string& svInput);
|
|
size_t StringCount(const string& svInput, char cDelim);
|
|
vector<string> StringSplit(string svInput, char cDelim, size_t nMax = SIZE_MAX);
|
|
|
|
string& StringLTrim(string& svInput, const char* pszToTrim, bool bTrimBefore = false);
|
|
string& StringRTrim(string& svInput, const char* pszToTrim, bool bTrimAfter = false);
|
|
string& StringTrim(string& svInput, const char* pszToTrim, bool bTrimAll = false);
|
|
|
|
string FourCCToString(int n);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Bytes
|
|
vector<int> StringToBytes(const char* szInput, bool bNullTerminator);
|
|
pair<vector<uint8_t>, string> StringToMaskedBytes(const char* szInput, bool bNullTerminator);
|
|
vector<int> PatternToBytes(const char* szInput);
|
|
pair<vector<uint8_t>, string> PatternToMaskedBytes(const char* szInput);
|
|
vector<int> IntToDigits(int iValue);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Print
|
|
void PrintM128i8(__m128i in);
|
|
void PrintM128i16(__m128i in);
|
|
void PrintM128i32(__m128i in);
|
|
void PrintM128i64(__m128i in);
|
|
|
|
void AppendPrintf(char* pBuffer, size_t nBufSize, char const* pFormat, ...);
|
|
string PrintPercentageEscape(const string& svInput);
|
|
|
|
string FormatBytes(size_t nBytes);
|
|
string FormatV(const char* szFormat, va_list args);
|
|
string Format(const char* szFormat, ...);
|
|
|
|
void JSON_DocumentToBufferDeserialize(const rapidjson::Document& document, rapidjson::StringBuffer& buffer, unsigned int indent = 4);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Array
|
|
template <typename Iter, typename Compare>
|
|
Iter ExtremeElementABS(Iter first, Iter last, Compare compare)
|
|
{
|
|
auto abs_compare = [compare](LONG a, LONG b)
|
|
{
|
|
return compare(abs(a), abs(b));
|
|
};
|
|
|
|
return std::min_element(first, last, abs_compare);
|
|
}
|
|
|
|
template <typename Iter> // Return lowest element in array.
|
|
Iter MinElementABS(Iter first, Iter last)
|
|
{
|
|
return ExtremeElementABS(first, last, std::less<>());
|
|
}
|
|
|
|
template <typename Iter> // Return highest element in array.
|
|
Iter MaxElementABS(Iter first, Iter last)
|
|
{
|
|
return ExtremeElementABS(first, last, std::greater<>());
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Net
|
|
int CompareIPv6(const IN6_ADDR& ipA, const IN6_ADDR& ipB);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Time
|
|
std::chrono::nanoseconds IntervalToDuration(const float flInterval);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|