-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathStormLibT.inl
60 lines (46 loc) · 2.56 KB
/
StormLibT.inl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*****************************************************************************/
/* StormLibT.inl Copyright (c) Ladislav Zezula 2023 */
/*---------------------------------------------------------------------------*/
/* Unicode layer for StormLib functions */
/*---------------------------------------------------------------------------*/
/* Date Ver Who Comment */
/* -------- ---- --- ------- */
/* 04.07.23 1.00 Lad Created */
/*****************************************************************************/
//-----------------------------------------------------------------------------
// Classes for conversions UNICODE <--> UTF-8
typedef TConvertString<WCHAR, char, CP_UTF8> TWideToUTF8;
typedef TConvertString<char, WCHAR, CP_UTF8> TUTF8ToWide;
typedef TConvertString<char, WCHAR, CP_ACP> TAnsiToWide;
typedef TConvertString<WCHAR, char, CP_ACP> TWideToAnsi;
//-----------------------------------------------------------------------------
// UNICODE versions of StormLib API
inline HANDLE SFileFindFirstFileW(HANDLE hMpq, LPCWSTR szMask, SFILE_FIND_DATA * lpFindFileData, LPCTSTR szListFile)
{
return SFileFindFirstFile(hMpq, TWideToMPQ8(szMask), lpFindFileData, szListFile);
}
inline bool SFileOpenFileExW(HANDLE hMpq, LPCWSTR szFileName, DWORD dwSearchScope, HANDLE * phFile)
{
return SFileOpenFileEx(hMpq, TWideToMPQ8(szFileName), dwSearchScope, phFile);
}
inline bool SFileAddFileExW(HANDLE hMpq, LPCTSTR szFileName, LPCWSTR szArchivedName, DWORD dwFlags, DWORD dwCompression, DWORD dwCompressionNext)
{
return SFileAddFileEx(hMpq, szFileName, TWideToMPQ8(szArchivedName), dwFlags, dwCompression, dwCompressionNext);
}
inline bool SFileRenameFileW(HANDLE hMpq, LPCWSTR szOldFileName, LPCWSTR szNewFileName)
{
return SFileRenameFile(hMpq, TWideToMPQ8(szOldFileName), TWideToMPQ8(szNewFileName));
}
//-----------------------------------------------------------------------------
// Ansi/Wide detours
#if defined(UNICODE) || defined(_UNICODE)
#define SFileFindFirstFileT SFileFindFirstFileW
#define SFileOpenFileExT SFileOpenFileExW
#define SFileAddFileExT SFileAddFileExW
#define SFileRenameFileT SFileRenameFileW
#else
#define SFileFindFirstFileT SFileFindFirstFile
#define SFileOpenFileExT SFileOpenFileEx
#define SFileAddFileExT SFileAddFileEx
#define SFileRenameFileT SFileRenameFile
#endif