diff options
Diffstat (limited to 'dep/CascLib/src/common/Common.h')
-rw-r--r-- | dep/CascLib/src/common/Common.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/dep/CascLib/src/common/Common.h b/dep/CascLib/src/common/Common.h new file mode 100644 index 00000000000..eb192fd50ca --- /dev/null +++ b/dep/CascLib/src/common/Common.h @@ -0,0 +1,98 @@ +/*****************************************************************************/ +/* CascCommon.h Copyright (c) Ladislav Zezula 2014 */ +/*---------------------------------------------------------------------------*/ +/* Common functions for CascLib */ +/*---------------------------------------------------------------------------*/ +/* Date Ver Who Comment */ +/* -------- ---- --- ------- */ +/* 29.04.14 1.00 Lad The first version of CascCommon.h */ +/*****************************************************************************/ + +#ifndef __COMMON_H__ +#define __COMMON_H__ + +//----------------------------------------------------------------------------- +// Common macros + +// Macro for building 64-bit file offset from two 32-bit +#define MAKE_OFFSET64(hi, lo) (((ULONGLONG)hi << 32) | (ULONGLONG)lo) + +#ifndef ALIGN_TO_SIZE +#define ALIGN_TO_SIZE(x, a) (((x) + (a)-1) & ~((a)-1)) +#endif + +//----------------------------------------------------------------------------- +// Conversion tables + +extern unsigned char AsciiToLowerTable[256]; +extern unsigned char AsciiToUpperTable[256]; +extern unsigned char IntToHexChar[]; + +//----------------------------------------------------------------------------- +// Memory management helper + +#if defined(_MSC_VER) && defined(_DEBUG) +void * DbgRealloc(void * ptr, size_t nSize); +#endif + +//----------------------------------------------------------------------------- +// GetLastError/SetLastError support for non-Windows platform + +#ifndef PLATFORM_WINDOWS +int GetLastError(); +void SetLastError(int nError); +#endif // PLATFORM_WINDOWS + +//----------------------------------------------------------------------------- +// String manipulation + +void CopyString(char * szTarget, const char * szSource, size_t cchLength); +void CopyString(wchar_t * szTarget, const char * szSource, size_t cchLength); +void CopyString(char * szTarget, const wchar_t * szSource, size_t cchLength); + +char * NewStr(const char * szString, size_t nCharsToReserve); +wchar_t * NewStr(const wchar_t * szString, size_t nCharsToReserve); + +TCHAR * NewStrFromAnsi(LPBYTE pbStringBegin, LPBYTE pbStringEnd); + +TCHAR * CombinePath(const TCHAR * szPath, const TCHAR * szSubDir); + +void NormalizeFileName_UpperBkSlash(char * szFileName); +void NormalizeFileName_LowerSlash(char * szFileName); + +int ConvertDigitToInt32(const TCHAR * szString, PDWORD PtrValue); +int ConvertStringToInt32(const TCHAR * szString, size_t nMaxDigits, PDWORD PtrValue); +char * StringFromBinary(LPBYTE pbBinary, size_t cbBinary, char * szBuffer); + +//----------------------------------------------------------------------------- +// File name utilities + +bool CheckWildCard(const char * szString, const char * szWildCard); +const wchar_t * GetPlainFileName(const wchar_t * szFileName); +const char * GetPlainFileName(const char * szFileName); + +//----------------------------------------------------------------------------- +// Hashing functions + +ULONGLONG HashStringJenkins(const char * szFileName); + +bool IsValidMD5(LPBYTE pbMd5); +void CalculateDataBlockHash(void * pvDataBlock, DWORD cbDataBlock, LPBYTE md5_hash); +bool VerifyDataBlockHash(void * pvDataBlock, DWORD cbDataBlock, LPBYTE expected_md5); + +//----------------------------------------------------------------------------- +// Scanning a directory + +typedef bool (*INDEX_FILE_FOUND)(const TCHAR * szFileName, PDWORD IndexArray, PDWORD OldIndexArray, void * pvContext); + +bool DirectoryExists(const TCHAR * szDirectory); + +int ScanIndexDirectory( + const TCHAR * szIndexPath, + INDEX_FILE_FOUND pfnOnFileFound, + PDWORD IndexArray, + PDWORD OldIndexArray, + void * pvContext + ); + +#endif // __COMMON_H__ |