From 061c7ecb1ae9a752bf84ed039765a43f5c1b3abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Thu, 29 Apr 2021 10:53:08 +0200 Subject: [PATCH] [FRAMEDYN] Fix the whole situation with regards to wchar_t Alias CHSTRING_WCHAR to unsigned short and use inline wrappers to be able to use the thing with modern compilers Put the GCC aliases into the public header. Enable build with clang-cl --- dll/win32/CMakeLists.txt | 4 +- dll/win32/framedyn/CMakeLists.txt | 8 - dll/win32/framedyn/alias_gcc.s | 98 ----- dll/win32/framedyn/chstring.cpp | 171 +++++---- dll/win32/framedyn/framedyn.spec | 120 +++---- .../rostests/tests/dllexport/CMakeLists.txt | 12 +- sdk/include/psdk/chstring.h | 337 +++++++++++++++--- 7 files changed, 448 insertions(+), 302 deletions(-) delete mode 100644 dll/win32/framedyn/alias_gcc.s diff --git a/dll/win32/CMakeLists.txt b/dll/win32/CMakeLists.txt index 9e7c13363ab..2f46ab09f56 100644 --- a/dll/win32/CMakeLists.txt +++ b/dll/win32/CMakeLists.txt @@ -44,9 +44,7 @@ add_subdirectory(faultrep) add_subdirectory(fltlib) add_subdirectory(fmifs) add_subdirectory(fontsub) -if(NOT USE_CLANG_CL) - add_subdirectory(framedyn) -endif() +add_subdirectory(framedyn) add_subdirectory(fusion) add_subdirectory(gdiplus) add_subdirectory(getuname) diff --git a/dll/win32/framedyn/CMakeLists.txt b/dll/win32/framedyn/CMakeLists.txt index 837fea881fa..16e1b7e43e9 100644 --- a/dll/win32/framedyn/CMakeLists.txt +++ b/dll/win32/framedyn/CMakeLists.txt @@ -13,11 +13,3 @@ set_target_cpp_properties(framedyn WITH_EXCEPTIONS) set_module_type(framedyn win32dll UNICODE) add_importlibs(framedyn oleaut32 msvcrt kernel32 ntdll) add_cd_file(TARGET framedyn DESTINATION reactos/system32/wbem FOR all) - -if(NOT MSVC) - add_asm_files(framedynex_asm alias_gcc.s) - add_library(framedynex ${framedynex_asm}) - set_target_properties(framedynex PROPERTIES LINKER_LANGUAGE ASM) -else() - target_compile_options(framedyn PRIVATE /Zc:wchar_t-) -endif() diff --git a/dll/win32/framedyn/alias_gcc.s b/dll/win32/framedyn/alias_gcc.s deleted file mode 100644 index 6390c4c1387..00000000000 --- a/dll/win32/framedyn/alias_gcc.s +++ /dev/null @@ -1,98 +0,0 @@ -#include - -.code -.align 4 - -MACRO(DEFINE_ALIAS, alias, alias2, origstring) -PUBLIC alias -.weakref alias2, origstring -alias: - jmp alias2 -ENDM - -#define DEFINE_ALIAS(alias, orig) DEFINE_ALIAS alias, __wrap_ ## alias, #orig - -DEFINE_ALIAS(__ZN8CHString16AllocBeforeWriteEi, ?AllocBeforeWrite@CHString@@IAEXH@Z) -DEFINE_ALIAS(__ZN8CHString11AllocBufferEi, ?AllocBuffer@CHString@@IAEXH@Z) -DEFINE_ALIAS(__ZNK8CHString9AllocCopyERS_iii, ?AllocCopy@CHString@@IBEXAAV1@HHH@Z) -DEFINE_ALIAS(__ZNK8CHString14AllocSysStringEv, ?AllocSysString@CHString@@QBEPAGXZ) -DEFINE_ALIAS(__ZN8CHString10AssignCopyEiPKw, ?AssignCopy@CHString@@IAEXHPBG@Z) -DEFINE_ALIAS(__ZN8CHStringC1ERKS_, ??0CHString@@QAE@ABV0@@Z) -DEFINE_ALIAS(__ZN8CHStringC1EPKc, ??0CHString@@QAE@PBD@Z) -DEFINE_ALIAS(__ZN8CHStringC1EPKh, ??0CHString@@QAE@PBE@Z) -DEFINE_ALIAS(__ZN8CHStringC1EPKw, ??0CHString@@QAE@PBG@Z) -DEFINE_ALIAS(__ZN8CHStringC1EPKwi, ??0CHString@@QAE@PBGH@Z) -DEFINE_ALIAS(__ZN8CHStringC1Ewi, ??0CHString@@QAE@GH@Z) -DEFINE_ALIAS(__ZN8CHStringC1Ev, ??0CHString@@QAE@XZ) -DEFINE_ALIAS(__ZN8CHStringC2Ev, ??0CHString@@QAE@XZ) // CHString::CHString(void) -DEFINE_ALIAS(__ZNK8CHString7CollateEPKw, ?Collate@CHString@@QBEHPBG@Z) -DEFINE_ALIAS(__ZNK8CHString7CompareEPKw, ?Compare@CHString@@QBEHPBG@Z) -DEFINE_ALIAS(__ZNK8CHString13CompareNoCaseEPKw, ?CompareNoCase@CHString@@QBEHPBG@Z) -DEFINE_ALIAS(__ZN8CHString10ConcatCopyEiPKwiS1_, ?ConcatCopy@CHString@@IAEXHPBGH0@Z) -DEFINE_ALIAS(__ZN8CHString13ConcatInPlaceEiPKw, ?ConcatInPlace@CHString@@IAEXHPBG@Z) -DEFINE_ALIAS(__ZN8CHString15CopyBeforeWriteEv, ?CopyBeforeWrite@CHString@@IAEXXZ) -DEFINE_ALIAS(__ZN8CHString5EmptyEv, ?Empty@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZNK8CHString4FindEPKw, ?Find@CHString@@QBEHPBG@Z) -DEFINE_ALIAS(__ZNK8CHString4FindEw, ?Find@CHString@@QBEHG@Z) -DEFINE_ALIAS(__ZNK8CHString9FindOneOfEPKw, ?FindOneOf@CHString@@QBEHPBG@Z) -DEFINE_ALIAS(__ZN8CHString6FormatEjz, ?Format@CHString@@QAAXIZZ) -DEFINE_ALIAS(__ZN8CHString6FormatEPKwz, ?Format@CHString@@QAAXPBGZZ) -DEFINE_ALIAS(__ZN8CHString14FormatMessageWEjz, ?FormatMessageW@CHString@@QAAXIZZ) -DEFINE_ALIAS(__ZN8CHString14FormatMessageWEPKwz, ?FormatMessageW@CHString@@QAAXPBGZZ) -DEFINE_ALIAS(__ZN8CHString7FormatVEPKwPc, ?FormatV@CHString@@QAEXPBGPAD@Z) -DEFINE_ALIAS(__ZN8CHString9FreeExtraEv, ?FreeExtra@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZNK8CHString14GetAllocLengthEv, ?GetAllocLength@CHString@@QBEHXZ) -DEFINE_ALIAS(__ZNK8CHString5GetAtEi, ?GetAt@CHString@@QBEGH@Z) -DEFINE_ALIAS(__ZN8CHString9GetBufferEi, ?GetBuffer@CHString@@QAEPAGH@Z) -DEFINE_ALIAS(__ZN8CHString18GetBufferSetLengthEi, ?GetBufferSetLength@CHString@@QAEPAGH@Z) -DEFINE_ALIAS(__ZNK8CHString7GetDataEv, ?GetData@CHString@@IBEPAUCHStringData@@XZ) -DEFINE_ALIAS(__ZNK8CHString9GetLengthEv, ?GetLength@CHString@@QBEHXZ) -DEFINE_ALIAS(__ZN8CHString4InitEv, ?Init@CHString@@IAEXXZ) -DEFINE_ALIAS(__ZNK8CHString7IsEmptyEv, ?IsEmpty@CHString@@QBEHXZ) -DEFINE_ALIAS(__ZNK8CHString4LeftEi, ?Left@CHString@@QBE?AV1@H@Z) -DEFINE_ALIAS(__ZN8CHString11LoadStringWEj, ?LoadStringW@CHString@@QAEHI@Z) -DEFINE_ALIAS(__ZN8CHString11LoadStringWEjPwj, ?LoadStringW@CHString@@IAEHIPAGI@Z) -DEFINE_ALIAS(__ZN8CHString10LockBufferEv, ?LockBuffer@CHString@@QAEPAGXZ) -DEFINE_ALIAS(__ZN8CHString9MakeLowerEv, ?MakeLower@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZN8CHString11MakeReverseEv, ?MakeReverse@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZN8CHString9MakeUpperEv, ?MakeUpper@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZNK8CHString3MidEi, ?Mid@CHString@@QBE?AV1@H@Z) -DEFINE_ALIAS(__ZNK8CHString3MidEii, ?Mid@CHString@@QBE?AV1@HH@Z) -DEFINE_ALIAS(__ZN8CHString7ReleaseEP12CHStringData@4, ?Release@CHString@@KGXPAUCHStringData@@@Z) -DEFINE_ALIAS(__ZN8CHString7ReleaseEv, ?Release@CHString@@IAEXXZ) -DEFINE_ALIAS(__ZN8CHString13ReleaseBufferEi, ?ReleaseBuffer@CHString@@QAEXH@Z) -DEFINE_ALIAS(__ZNK8CHString11ReverseFindEw, ?ReverseFind@CHString@@QBEHG@Z) -DEFINE_ALIAS(__ZNK8CHString5RightEi, ?Right@CHString@@QBE?AV1@H@Z) -DEFINE_ALIAS(__ZN8CHString10SafeStrlenEPKw@4, ?SafeStrlen@CHString@@KGHPBG@Z) -DEFINE_ALIAS(__ZN8CHString5SetAtEiw, ?SetAt@CHString@@QAEXHG@Z) -DEFINE_ALIAS(__ZNK8CHString13SpanExcludingEPKw, ?SpanExcluding@CHString@@QBE?AV1@PBG@Z) -DEFINE_ALIAS(__ZNK8CHString13SpanIncludingEPKw, ?SpanIncluding@CHString@@QBE?AV1@PBG@Z) -DEFINE_ALIAS(__ZN8CHString8TrimLeftEv, ?TrimLeft@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZN8CHString9TrimRightEv, ?TrimRight@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZN8CHString12UnlockBufferEv, ?UnlockBuffer@CHString@@QAEXXZ) -DEFINE_ALIAS(__ZNK8CHStringcvPKwEv, ??BCHString@@QBEPBGXZ) -DEFINE_ALIAS(__ZN8CHStringpLERKS_, ??YCHString@@QAEABV0@ABV0@@Z) -DEFINE_ALIAS(__ZN8CHStringpLEc, ??YCHString@@QAEABV0@D@Z) -DEFINE_ALIAS(__ZN8CHStringpLEPKw, ??YCHString@@QAEABV0@PBG@Z) -DEFINE_ALIAS(__ZN8CHStringpLEw, ??YCHString@@QAEABV0@G@Z) -DEFINE_ALIAS(__ZN8CHStringaSEPS_, ??4CHString@@QAEABV0@PAV0@@Z) -DEFINE_ALIAS(__ZN8CHStringaSERKS_, ??4CHString@@QAEABV0@ABV0@@Z) -DEFINE_ALIAS(__ZN8CHStringaSEPKc, ??4CHString@@QAEABV0@PBD@Z) -DEFINE_ALIAS(__ZN8CHStringaSEc, ??4CHString@@QAEABV0@D@Z) -DEFINE_ALIAS(__ZN8CHStringaSEPKh, ??4CHString@@QAEABV0@PBE@Z) -DEFINE_ALIAS(__ZN8CHStringaSEPKw, ??4CHString@@QAEABV0@PBG@Z) -DEFINE_ALIAS(__ZN8CHStringaSEw, ??4CHString@@QAEABV0@G@Z) -DEFINE_ALIAS(__ZNK8CHStringixEi, ??ACHString@@QBEGH@Z) -DEFINE_ALIAS(__ZN8CHStringD1Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() complete object destructor -DEFINE_ALIAS(__ZN8CHStringD2Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() base object destructor -DEFINE_ALIAS(__ZplwRK8CHString, ??H@YG?AVCHString@@GABV0@@Z) -DEFINE_ALIAS(__ZplRK8CHStringw, ??H@YG?AVCHString@@ABV0@G@Z) -DEFINE_ALIAS(__ZplRK8CHStringPKw, ??H@YG?AVCHString@@ABV0@PBG@Z) -DEFINE_ALIAS(__ZplPKwRK8CHString, ??H@YG?AVCHString@@PBGABV0@@Z) -DEFINE_ALIAS(__ZplRK8CHStringS1_, ??H@YG?AVCHString@@ABV0@0@Z) -DEFINE_ALIAS(__ZN8Provider5FlushEv, ?Flush@Provider@@MAEXXZ) -DEFINE_ALIAS(__ZN8Provider21ValidateDeletionFlagsEl, ?ValidateDeletionFlags@Provider@@MAEJJ@Z) -DEFINE_ALIAS(__ZN8Provider19ValidateMethodFlagsEl, ?ValidateMethodFlags@Provider@@MAEJJ@Z) -DEFINE_ALIAS(__ZN8Provider18ValidateQueryFlagsEl, ?ValidateQueryFlags@Provider@@MAEJJ@Z) - -END diff --git a/dll/win32/framedyn/chstring.cpp b/dll/win32/framedyn/chstring.cpp index 59bbec6cfa8..9f24a90ec2b 100644 --- a/dll/win32/framedyn/chstring.cpp +++ b/dll/win32/framedyn/chstring.cpp @@ -34,7 +34,7 @@ // This is unsafe. This string show be LPCWSTR // However we have to assign it to LPWSTR var. So, let's ignore about const, // as MS does. Normally we check in our code that we don't overwrite this string. -LPWSTR afxPchNil = (LPWSTR)L"\0"; +CHSTRING_WCHAR afxPchNil[1] = {0}; // This is the data that are matching the null string upper CHStringData afxNullData = {0, 0, 0}; // Exception we may throw in case of allocation failure @@ -107,7 +107,7 @@ CHString::CHString() /* * @implemented */ -CHString::CHString(WCHAR ch, int nRepeat) +CHString::CHString(CHSTRING_WCHAR ch, int nRepeat) { // Allow null initialize, in case something goes wrong m_pchData = afxPchNil; @@ -131,7 +131,7 @@ CHString::CHString(WCHAR ch, int nRepeat) /* * @implemented */ -CHString::CHString(LPCWSTR lpsz) +CHString::CHString(CHSTRING_LPCWSTR lpsz) { // Allow null initialize, in case something goes wrong m_pchData = afxPchNil; @@ -146,7 +146,9 @@ CHString::CHString(LPCWSTR lpsz) if (Len) { AllocBuffer(Len); - wcsncpy(m_pchData, lpsz, Len); + wcsncpy(reinterpret_cast(m_pchData), + reinterpret_cast(lpsz), + Len); } } } @@ -154,7 +156,7 @@ CHString::CHString(LPCWSTR lpsz) /* * @implemented */ -CHString::CHString(LPCWSTR lpch, int nLength) +CHString::CHString(CHSTRING_LPCWSTR lpch, int nLength) { // Allow null initialize, in case something goes wrong m_pchData = afxPchNil; @@ -164,7 +166,9 @@ CHString::CHString(LPCWSTR lpch, int nLength) { // Just copy the string AllocBuffer(nLength); - wcsncpy(m_pchData, lpch, nLength); + wcsncpy(reinterpret_cast(m_pchData), + reinterpret_cast(lpch), + nLength); } } @@ -185,7 +189,7 @@ CHString::CHString(LPCSTR lpsz) { // Allocate and convert the string AllocBuffer(Len); - mbstowcsz(m_pchData, lpsz, Len + 1); + mbstowcsz(reinterpret_cast(m_pchData), lpsz, Len + 1); // Releasing buffer here is to allow to // update the buffer size. We notify we're // done with changing the string: recompute its @@ -348,30 +352,32 @@ void CHString::AllocCopy(CHString& dest, int nCopyLen, int nCopyIndex, int nExtr // copying data from another. This is needed by Left/Mid/Right dest.AllocBuffer(nCopyLen + nExtraLen); // And copy our stuff in - wcsncpy(dest.m_pchData, m_pchData + nCopyIndex, nCopyLen); + wcsncpy(reinterpret_cast(dest.m_pchData), + reinterpret_cast(m_pchData + nCopyIndex), + nCopyLen); } /* * @implemented */ -BSTR CHString::AllocSysString() const +CHSTRING_LPWSTR CHString::AllocSysString() const { BSTR SysString; // Just allocate the string - SysString = SysAllocStringLen(m_pchData, GetData()->nDataLength); + SysString = SysAllocStringLen(reinterpret_cast(m_pchData), GetData()->nDataLength); if (!SysString) { throw HeapException; } - return SysString; + return reinterpret_cast(SysString); } /* * @implemented */ -void CHString::AssignCopy(int nSrcLen, LPCWSTR lpszSrcData) +void CHString::AssignCopy(int nSrcLen, CHSTRING_LPCWSTR lpszSrcData) { // Don't allow negative len if (nSrcLen < 0) @@ -389,7 +395,8 @@ void CHString::AssignCopy(int nSrcLen, LPCWSTR lpszSrcData) } // Just copy, write down new size, and ensure it's null terminated - wcsncpy(m_pchData, lpszSrcData, nSrcLen); + wcsncpy(reinterpret_cast(m_pchData), + reinterpret_cast(lpszSrcData), nSrcLen); GetData()->nDataLength = nSrcLen; m_pchData[nSrcLen] = 0; } @@ -397,37 +404,37 @@ void CHString::AssignCopy(int nSrcLen, LPCWSTR lpszSrcData) /* * @implemented */ -int CHString::Collate(LPCWSTR lpsz) const +int CHString::Collate(CHSTRING_LPCWSTR lpsz) const { // Just call the deprecated function here - no matter we are null terminated // Did you read my statement about how safe is this implementation? - return wcscoll(m_pchData, lpsz); + return wcscoll(reinterpret_cast(m_pchData), reinterpret_cast(lpsz)); } /* * @implemented */ -int CHString::Compare(LPCWSTR lpsz) const +int CHString::Compare(CHSTRING_LPCWSTR lpsz) const { // Just call the deprecated function here - no matter we are null terminated // Did you read my statement about how safe is this implementation? - return wcscmp(m_pchData, lpsz); + return wcscmp(reinterpret_cast(m_pchData), reinterpret_cast(lpsz)); } /* * @implemented */ -int CHString::CompareNoCase(LPCWSTR lpsz) const +int CHString::CompareNoCase(CHSTRING_LPCWSTR lpsz) const { // Just call the deprecated function here - no matter we are null terminated // Did you read my statement about how safe is this implementation? - return wcsicmp(m_pchData, lpsz); + return wcsicmp(reinterpret_cast(m_pchData), reinterpret_cast(lpsz)); } /* * @implemented */ -void CHString::ConcatInPlace(int nSrcLen, LPCWSTR lpszSrcData) +void CHString::ConcatInPlace(int nSrcLen, CHSTRING_LPCWSTR lpszSrcData) { // With null length, there's not that much to concat... if (nSrcLen == 0) @@ -467,7 +474,9 @@ void CHString::ConcatInPlace(int nSrcLen, LPCWSTR lpszSrcData) } // Then, just copy and null terminate - wcsncpy(m_pchData + GetData()->nDataLength, lpszSrcData, nSrcLen); + wcsncpy(reinterpret_cast(m_pchData + GetData()->nDataLength), + reinterpret_cast(lpszSrcData), + nSrcLen); GetData()->nDataLength += nSrcLen; m_pchData[GetData()->nDataLength] = 0; } @@ -476,7 +485,9 @@ void CHString::ConcatInPlace(int nSrcLen, LPCWSTR lpszSrcData) /* * @implemented */ -void CHString::ConcatCopy(int nSrc1Len, LPCWSTR lpszSrc1Data, int nSrc2Len, LPCWSTR lpszSrc2Data) +void CHString::ConcatCopy( + int nSrc1Len, CHSTRING_LPCWSTR lpszSrc1Data, + int nSrc2Len, CHSTRING_LPCWSTR lpszSrc2Data) { int TotalLen; @@ -495,8 +506,12 @@ void CHString::ConcatCopy(int nSrc1Len, LPCWSTR lpszSrc1Data, int nSrc2Len, LPCW // Otherwise, allocate a new buffer to hold everything (caller will release previous buffer) AllocBuffer(TotalLen); // And concat stuff - wcsncpy(m_pchData, lpszSrc1Data, nSrc1Len); - wcsncpy(m_pchData + nSrc1Len, lpszSrc2Data, nSrc2Len); + wcsncpy(reinterpret_cast(m_pchData), + reinterpret_cast(lpszSrc1Data), + nSrc1Len); + wcsncpy(reinterpret_cast(m_pchData + nSrc1Len), + reinterpret_cast(lpszSrc2Data), + nSrc2Len); } /* @@ -521,7 +536,9 @@ void CHString::CopyBeforeWrite() Release(); // Alloc new buffer and copy old data in it AllocBuffer(Data->nDataLength); - wcsncpy(m_pchData, Data->data(), Data->nDataLength); + wcsncpy(reinterpret_cast(m_pchData), + reinterpret_cast(Data->data()), + Data->nDataLength); } /* @@ -552,12 +569,12 @@ void CHString::Empty() /* * @implemented */ -int CHString::Find(WCHAR ch) const +int CHString::Find(CHSTRING_WCHAR ch) const { - WCHAR *Found; + CHSTRING_LPCWSTR Found; // Let's use appropriate helper - Found = wcschr(m_pchData, ch); + Found = reinterpret_cast(wcschr(reinterpret_cast(m_pchData), ch)); // We have to return a position, so compute it if (Found) { @@ -571,12 +588,12 @@ int CHString::Find(WCHAR ch) const /* * @implemented */ -int CHString::Find(LPCWSTR lpszSub) const +int CHString::Find(CHSTRING_LPCWSTR lpszSub) const { - WCHAR *Found; + CHSTRING_LPCWSTR Found; // Let's use appropriate helper - Found = wcsstr(m_pchData, lpszSub); + Found = reinterpret_cast(wcsstr(reinterpret_cast(m_pchData), reinterpret_cast(lpszSub))); // We have to return a position, so compute it if (Found) { @@ -590,12 +607,12 @@ int CHString::Find(LPCWSTR lpszSub) const /* * @implemented */ -int CHString::FindOneOf(LPCWSTR lpszCharSet) const +int CHString::FindOneOf(CHSTRING_LPCWSTR lpszCharSet) const { - WCHAR *Found; + CHSTRING_LPCWSTR Found; // Let's use appropriate helper - Found = wcspbrk(m_pchData, lpszCharSet); + Found = reinterpret_cast(wcspbrk(reinterpret_cast(m_pchData), reinterpret_cast(lpszCharSet))); // We have to return a position, so compute it if (Found) { @@ -618,7 +635,7 @@ void CHString::Format(UINT nFormatID, ...) /* * @implemented */ -void CHString::Format(LPCWSTR lpszFormat, ...) +void CHString::Format(CHSTRING_LPCWSTR lpszFormat, ...) { // Forward to FormatV va_list ArgsList; @@ -640,7 +657,7 @@ void CHString::FormatMessageW(UINT nFormatID, ...) /* * @unimplemented */ -void CHString::FormatMessageW(LPCWSTR lpszFormat, ...) +void CHString::FormatMessageW(CHSTRING_LPCWSTR lpszFormat, ...) { UNIMPLEMENTED; } @@ -648,7 +665,7 @@ void CHString::FormatMessageW(LPCWSTR lpszFormat, ...) /* * @unimplemented */ -void CHString::FormatV(LPCWSTR lpszFormat, va_list argList) +void CHString::FormatV(CHSTRING_LPCWSTR lpszFormat, va_list argList) { UNIMPLEMENTED; } @@ -671,7 +688,7 @@ void CHString::FreeExtra() // Allocate a new one, at the right size (with no place for \0 :-)) AllocBuffer(GetData()->nDataLength); // Copy old and release it - wcsncpy(m_pchData, OldData->data(), OldData->nDataLength); + wcsncpy(reinterpret_cast(m_pchData), reinterpret_cast(OldData->data()), OldData->nDataLength); Release(OldData); } @@ -686,7 +703,7 @@ int CHString::GetAllocLength() const /* * @implemented */ -WCHAR CHString::GetAt(int nIndex) const +CHSTRING_WCHAR CHString::GetAt(int nIndex) const { // It's up to you to check the index! return m_pchData[nIndex]; @@ -695,9 +712,9 @@ WCHAR CHString::GetAt(int nIndex) const /* * @implemented */ -LPWSTR CHString::GetBuffer(int nMinBufLength) +CHSTRING_LPWSTR CHString::GetBuffer(int nMinBufLength) { - LPWSTR OldBuffer = m_pchData; + CHSTRING_LPWSTR OldBuffer = m_pchData; // We'll have to allocate a new buffer if it's not big enough // or if it's shared by several strings @@ -715,7 +732,7 @@ LPWSTR CHString::GetBuffer(int nMinBufLength) // Allocate new buffer AllocBuffer(nMinBufLength); // Copy contents - wcsncpy(m_pchData, OldBuffer, OldLen); + wcsncpy(reinterpret_cast(m_pchData), reinterpret_cast(OldBuffer), OldLen); GetData()->nDataLength = OldLen; // Release old @@ -730,7 +747,7 @@ LPWSTR CHString::GetBuffer(int nMinBufLength) /* * @implemented */ -LPWSTR CHString::GetBufferSetLength(int nNewLength) +CHSTRING_LPWSTR CHString::GetBufferSetLength(int nNewLength) { // Get a buffer big enough // We don't care about the return, it will be set in the string @@ -813,7 +830,7 @@ int CHString::LoadStringW(UINT nID) /* * @implemented */ -int CHString::LoadStringW(UINT nID, LPWSTR lpszBuf, UINT nMaxBuf) +int CHString::LoadStringW(UINT nID, CHSTRING_LPWSTR lpszBuf, UINT nMaxBuf) { // Deprecated and not implemented any longer - well, this is its implementation return 0; @@ -822,9 +839,9 @@ int CHString::LoadStringW(UINT nID, LPWSTR lpszBuf, UINT nMaxBuf) /* * @implemented */ -LPWSTR CHString::LockBuffer() +CHSTRING_LPWSTR CHString::LockBuffer() { - LPWSTR LockedBuffer; + CHSTRING_LPWSTR LockedBuffer; // The purpose here is basically to set the nRefs to max int LockedBuffer = GetBuffer(0); @@ -842,7 +859,7 @@ void CHString::MakeLower() CopyBeforeWrite(); // Let's use appropriate helper - _wcslwr(m_pchData); + _wcslwr(reinterpret_cast(m_pchData)); } /* @@ -854,7 +871,7 @@ void CHString::MakeReverse() CopyBeforeWrite(); // Let's use appropriate helper - _wcsrev(m_pchData); + _wcsrev(reinterpret_cast(m_pchData)); } /* @@ -866,7 +883,7 @@ void CHString::MakeUpper() CopyBeforeWrite(); // Let's use appropriate helper - _wcsupr(m_pchData); + _wcsupr(reinterpret_cast(m_pchData)); } /* @@ -968,7 +985,7 @@ void CHString::ReleaseBuffer(int nNewLength) // If no len provided, get one if (nNewLength == -1) { - nNewLength = (int)wcslen(m_pchData); + nNewLength = (int)wcslen(reinterpret_cast(m_pchData)); } // Set appropriate size and null-terminate @@ -980,12 +997,12 @@ void CHString::ReleaseBuffer(int nNewLength) /* * @implemented */ -int CHString::ReverseFind(WCHAR ch) const +int CHString::ReverseFind(CHSTRING_WCHAR ch) const { - WCHAR *Last; + CHSTRING_WCHAR *Last; // Let's use appropriate helper - Last = wcsrchr(m_pchData, ch); + Last = reinterpret_cast(wcsrchr(reinterpret_cast(m_pchData), ch)); // We have to return a position, so compute it if (Last) { @@ -1020,7 +1037,7 @@ CHString CHString::Right(int nCount) const /* * @implemented */ -int CHString::SafeStrlen(LPCWSTR lpsz) +int CHString::SafeStrlen(CHSTRING_LPCWSTR lpsz) { // Check we have a string and then get its length if (lpsz == 0) @@ -1031,13 +1048,13 @@ int CHString::SafeStrlen(LPCWSTR lpsz) // Of course, it's not safe at all in case string is not null-terminated. // Things that may happen given strings are not to be null-terminated // in this class... - return (int)wcslen(lpsz); + return (int)wcslen(reinterpret_cast(lpsz)); } /* * @implemented */ -void CHString::SetAt(int nIndex, WCHAR ch) +void CHString::SetAt(int nIndex, CHSTRING_WCHAR ch) { CopyBeforeWrite(); @@ -1047,24 +1064,24 @@ void CHString::SetAt(int nIndex, WCHAR ch) /* * @implemented */ -CHString CHString::SpanExcluding(LPCWSTR lpszCharSet) const +CHString CHString::SpanExcluding(CHSTRING_LPCWSTR lpszCharSet) const { int Count; // Get position and then, extract - Count = (int)wcscspn(m_pchData, lpszCharSet); + Count = (int)wcscspn(reinterpret_cast(m_pchData), reinterpret_cast(lpszCharSet)); return Left(Count); } /* * @implemented */ -CHString CHString::SpanIncluding(LPCWSTR lpszCharSet) const +CHString CHString::SpanIncluding(CHSTRING_LPCWSTR lpszCharSet) const { int Count; // Get position and then, extract - Count = (int)wcsspn(m_pchData, lpszCharSet); + Count = (int)wcsspn(reinterpret_cast(m_pchData), reinterpret_cast(lpszCharSet)); return Left(Count); } @@ -1075,7 +1092,7 @@ void CHString::TrimLeft() { int NewBegin; int NewLength; - WCHAR *CurrentChar; + CHSTRING_WCHAR *CurrentChar; // We'll modify, so copy first CopyBeforeWrite(); @@ -1097,7 +1114,7 @@ void CHString::TrimLeft() // And move memory NewBegin = (CurrentChar - m_pchData); NewLength = GetData()->nDataLength - NewBegin; - memmove(m_pchData, CurrentChar, NewLength * sizeof(WCHAR)); + memmove(m_pchData, CurrentChar, NewLength * sizeof(CHSTRING_WCHAR)); GetData()->nDataLength = NewLength; } @@ -1106,8 +1123,8 @@ void CHString::TrimLeft() */ void CHString::TrimRight() { - WCHAR *CurrentChar; - WCHAR *CanBeEaten; + CHSTRING_WCHAR *CurrentChar; + CHSTRING_WCHAR *CanBeEaten; // We'll modify, so copy first CopyBeforeWrite(); @@ -1167,14 +1184,14 @@ void CHString::UnlockBuffer() */ const CHString& CHString::operator=(char ch) { - *this = (WCHAR)ch; + *this = (CHSTRING_WCHAR)ch; return *this; } /* * @implemented */ -const CHString& CHString::operator=(WCHAR ch) +const CHString& CHString::operator=(CHSTRING_WCHAR ch) { AssignCopy(1, &ch); return *this; @@ -1215,7 +1232,7 @@ const CHString& CHString::operator=(LPCSTR lpsz) } // Convert and copy - mbstowcsz(m_pchData, lpsz, Len + 1); + mbstowcsz(reinterpret_cast(m_pchData), lpsz, Len + 1); // Get new size and so on ReleaseBuffer(); @@ -1225,7 +1242,7 @@ const CHString& CHString::operator=(LPCSTR lpsz) /* * @implemented */ -const CHString& CHString::operator=(LPCWSTR lpsz) +const CHString& CHString::operator=(CHSTRING_LPCWSTR lpsz) { int Len; @@ -1279,14 +1296,14 @@ const CHString& CHString::operator=(const unsigned char* lpsz) */ const CHString& CHString::operator+=(char ch) { - *this += (WCHAR)ch; + *this += (CHSTRING_WCHAR)ch; return *this; } /* * @implemented */ -const CHString& CHString::operator+=(WCHAR ch) +const CHString& CHString::operator+=(CHSTRING_WCHAR ch) { ConcatInPlace(1, &ch); return *this; @@ -1295,7 +1312,7 @@ const CHString& CHString::operator+=(WCHAR ch) /* * @implemented */ -const CHString& CHString::operator+=(LPCWSTR lpsz) +const CHString& CHString::operator+=(CHSTRING_LPCWSTR lpsz) { int Len; @@ -1318,7 +1335,7 @@ const CHString& CHString::operator+=(const CHString& string) /* * @implemented */ -WCHAR CHString::operator[](int nIndex) const +CHSTRING_WCHAR CHString::operator[](int nIndex) const { return m_pchData[nIndex]; } @@ -1326,7 +1343,7 @@ WCHAR CHString::operator[](int nIndex) const /* * @implemented */ -CHString::operator LPCWSTR() const +CHString::operator CHSTRING_LPCWSTR() const { return m_pchData; } @@ -1334,7 +1351,7 @@ CHString::operator LPCWSTR() const /* * @implemented */ -CHString WINAPI operator+(WCHAR ch, const CHString& string) +CHString WINAPI operator+(CHSTRING_WCHAR ch, const CHString& string) { CHString NewString; @@ -1347,7 +1364,7 @@ CHString WINAPI operator+(WCHAR ch, const CHString& string) /* * @implemented */ -CHString WINAPI operator+(const CHString& string, WCHAR ch) +CHString WINAPI operator+(const CHString& string, CHSTRING_WCHAR ch) { CHString NewString; @@ -1360,7 +1377,7 @@ CHString WINAPI operator+(const CHString& string, WCHAR ch) /* * @implemented */ -CHString WINAPI operator+(const CHString& string, LPCWSTR lpsz) +CHString WINAPI operator+(const CHString& string, CHSTRING_LPCWSTR lpsz) { int Len; CHString NewString; @@ -1376,7 +1393,7 @@ CHString WINAPI operator+(const CHString& string, LPCWSTR lpsz) /* * @implemented */ -CHString WINAPI operator+(LPCWSTR lpsz, const CHString& string) +CHString WINAPI operator+(CHSTRING_LPCWSTR lpsz, const CHString& string) { int Len; CHString NewString; diff --git a/dll/win32/framedyn/framedyn.spec b/dll/win32/framedyn/framedyn.spec index 99bc8ca5074..99a22f33598 100644 --- a/dll/win32/framedyn/framedyn.spec +++ b/dll/win32/framedyn/framedyn.spec @@ -4,29 +4,29 @@ @ thiscall -arch=i386 ?AllocBuffer@CHString@@IAEXH@Z(long) _ZN8CHString11AllocBufferEi # protected: void __thiscall CHString::AllocBuffer(int) @ thiscall -arch=i386 ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long) _ZNK8CHString9AllocCopyERS_iii # protected: void __thiscall CHString::AllocCopy(class CHString &,int,int,int)const @ thiscall -arch=i386 ?AllocSysString@CHString@@QBEPAGXZ() _ZNK8CHString14AllocSysStringEv -@ thiscall -arch=i386 ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKw +@ thiscall -arch=i386 ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKt @ thiscall -arch=i386 ??0CHString@@QAE@ABV0@@Z(ptr) _ZN8CHStringC1ERKS_ @ thiscall -arch=i386 ??0CHString@@QAE@PBD@Z(str) _ZN8CHStringC1EPKc @ thiscall -arch=i386 ??0CHString@@QAE@PBE@Z(str) _ZN8CHStringC1EPKh -@ thiscall -arch=i386 ??0CHString@@QAE@PBG@Z(wstr) _ZN8CHStringC1EPKw -@ thiscall -arch=i386 ??0CHString@@QAE@PBGH@Z(wstr long) _ZN8CHStringC1EPKwi -@ thiscall -arch=i386 ??0CHString@@QAE@GH@Z(long long) _ZN8CHStringC1Ewi +@ thiscall -arch=i386 ??0CHString@@QAE@PBG@Z(wstr) _ZN8CHStringC1EPKt +@ thiscall -arch=i386 ??0CHString@@QAE@PBGH@Z(wstr long) _ZN8CHStringC1EPKti +@ thiscall -arch=i386 ??0CHString@@QAE@GH@Z(long long) _ZN8CHStringC1Eti @ thiscall -arch=i386 ??0CHString@@QAE@XZ() _ZN8CHStringC1Ev # public: __thiscall CHString::CHString(void) -@ thiscall -arch=i386 ?Collate@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CollateEPKw # public: int __thiscall CHString::Collate(unsigned short const *)const -@ thiscall -arch=i386 ?Compare@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CompareEPKw # public: int __thiscall CHString::Compare(unsigned short const *)const -@ thiscall -arch=i386 ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKw # public: int __thiscall CHString::CompareNoCase(unsigned short const *)const -@ thiscall -arch=i386 ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr) _ZN8CHString10ConcatCopyEiPKwiS1_ # protected: void __thiscall CHString::ConcatCopy(int,unsigned short const *,int,unsigned short const *) -@ thiscall -arch=i386 ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString13ConcatInPlaceEiPKw # protected: void __thiscall CHString::ConcatInPlace(int,unsigned short const *) +@ thiscall -arch=i386 ?Collate@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CollateEPKt # public: int __thiscall CHString::Collate(unsigned short const *)const +@ thiscall -arch=i386 ?Compare@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CompareEPKt # public: int __thiscall CHString::Compare(unsigned short const *)const +@ thiscall -arch=i386 ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKt # public: int __thiscall CHString::CompareNoCase(unsigned short const *)const +@ thiscall -arch=i386 ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr) _ZN8CHString10ConcatCopyEiPKtiS1_ # protected: void __thiscall CHString::ConcatCopy(int,unsigned short const *,int,unsigned short const *) +@ thiscall -arch=i386 ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString13ConcatInPlaceEiPKt # protected: void __thiscall CHString::ConcatInPlace(int,unsigned short const *) @ thiscall -arch=i386 ?CopyBeforeWrite@CHString@@IAEXXZ() _ZN8CHString15CopyBeforeWriteEv # protected: void __thiscall CHString::CopyBeforeWrite(void) @ thiscall -arch=i386 ?Empty@CHString@@QAEXXZ() _ZN8CHString5EmptyEv # public: void __thiscall CHString::Empty(void) -@ thiscall -arch=i386 ?Find@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString4FindEPKw # public: int __thiscall CHString::Find(unsigned short const *)const -@ thiscall -arch=i386 ?Find@CHString@@QBEHG@Z(long) _ZNK8CHString4FindEw # public: int __thiscall CHString::Find(unsigned short)const -@ thiscall -arch=i386 ?FindOneOf@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString9FindOneOfEPKw # public: int __thiscall CHString::FindOneOf(unsigned short const *)const +@ thiscall -arch=i386 ?Find@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString4FindEPKt # public: int __thiscall CHString::Find(unsigned short const *)const +@ thiscall -arch=i386 ?Find@CHString@@QBEHG@Z(long) _ZNK8CHString4FindEt # public: int __thiscall CHString::Find(unsigned short)const +@ thiscall -arch=i386 ?FindOneOf@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString9FindOneOfEPKt # public: int __thiscall CHString::FindOneOf(unsigned short const *)const @ thiscall -arch=i386 ?Format@CHString@@QAAXIZZ(long long long) _ZN8CHString6FormatEjz # public: void __cdecl CHString::Format(unsigned int,...) -@ thiscall -arch=i386 ?Format@CHString@@QAAXPBGZZ(long wstr long) _ZN8CHString6FormatEPKwz # public: void __cdecl CHString::Format(unsigned short const *,...) +@ thiscall -arch=i386 ?Format@CHString@@QAAXPBGZZ(long wstr long) _ZN8CHString6FormatEPKtz # public: void __cdecl CHString::Format(unsigned short const *,...) @ thiscall -arch=i386 ?FormatMessageW@CHString@@QAAXIZZ(long long long) _ZN8CHString14FormatMessageWEjz # public: void __cdecl CHString::FormatMessageW(unsigned int,...) -@ thiscall -arch=i386 ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long) _ZN8CHString14FormatMessageWEPKwz # public: void __cdecl CHString::FormatMessageW(unsigned short const *,...) -@ thiscall -arch=i386 ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long) _ZN8CHString7FormatVEPKwPc # public: void __thiscall CHString::FormatV(unsigned short const *,char *) +@ thiscall -arch=i386 ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long) _ZN8CHString14FormatMessageWEPKtz # public: void __cdecl CHString::FormatMessageW(unsigned short const *,...) +@ thiscall -arch=i386 ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long) _ZN8CHString7FormatVEPKtPc # public: void __thiscall CHString::FormatV(unsigned short const *,char *) @ thiscall -arch=i386 ?FreeExtra@CHString@@QAEXXZ() _ZN8CHString9FreeExtraEv # public: void __thiscall CHString::FreeExtra(void) @ thiscall -arch=i386 ?GetAllocLength@CHString@@QBEHXZ() _ZNK8CHString14GetAllocLengthEv # public: int __thiscall CHString::GetAllocLength(void)const @ thiscall -arch=i386 ?GetAt@CHString@@QBEGH@Z(long) _ZNK8CHString5GetAtEi # public: unsigned short __thiscall CHString::GetAt(int)const @@ -38,7 +38,7 @@ @ thiscall -arch=i386 ?IsEmpty@CHString@@QBEHXZ() _ZNK8CHString7IsEmptyEv # public: int __thiscall CHString::IsEmpty(void)const @ thiscall -arch=i386 ?Left@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString4LeftEi # public: class CHString __thiscall CHString::Left(int)const @ thiscall -arch=i386 ?LoadStringW@CHString@@QAEHI@Z(long) _ZN8CHString11LoadStringWEj # public: int __thiscall CHString::LoadStringW(unsigned int) -@ thiscall -arch=i386 ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long) _ZN8CHString11LoadStringWEjPwj # protected: int __thiscall CHString::LoadStringW(unsigned int,unsigned short *,unsigned int) +@ thiscall -arch=i386 ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long) _ZN8CHString11LoadStringWEjPtj # protected: int __thiscall CHString::LoadStringW(unsigned int,unsigned short *,unsigned int) @ thiscall -arch=i386 ?LockBuffer@CHString@@QAEPAGXZ() _ZN8CHString10LockBufferEv # public: unsigned short * __thiscall CHString::LockBuffer(void) @ thiscall -arch=i386 ?MakeLower@CHString@@QAEXXZ() _ZN8CHString9MakeLowerEv # public: void __thiscall CHString::MakeLower(void) @ thiscall -arch=i386 ?MakeReverse@CHString@@QAEXXZ() _ZN8CHString11MakeReverseEv # public: void __thiscall CHString::MakeReverse(void) @@ -48,33 +48,33 @@ @ thiscall -arch=i386 ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr) _ZN8CHString7ReleaseEP12CHStringData@4 # protected: static void __stdcall CHString::Release(struct CHStringData *) @ thiscall -arch=i386 ?Release@CHString@@IAEXXZ() _ZN8CHString7ReleaseEv # protected: void __thiscall CHString::Release(void) @ thiscall -arch=i386 ?ReleaseBuffer@CHString@@QAEXH@Z(long) _ZN8CHString13ReleaseBufferEi # public: void __thiscall CHString::ReleaseBuffer(int) -@ thiscall -arch=i386 ?ReverseFind@CHString@@QBEHG@Z(long) _ZNK8CHString11ReverseFindEw # public: int __thiscall CHString::ReverseFind(unsigned short)const +@ thiscall -arch=i386 ?ReverseFind@CHString@@QBEHG@Z(long) _ZNK8CHString11ReverseFindEt # public: int __thiscall CHString::ReverseFind(unsigned short)const @ thiscall -arch=i386 ?Right@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString5RightEi # public: class CHString __thiscall CHString::Right(int)const -@ stdcall -arch=i386 ?SafeStrlen@CHString@@KGHPBG@Z(wstr) _ZN8CHString10SafeStrlenEPKw # protected: static int__stdcall CHString::SafeStrlen(unsigned short const *) -@ thiscall -arch=i386 ?SetAt@CHString@@QAEXHG@Z(long long) _ZN8CHString5SetAtEiw # public: void __thiscall CHString::SetAt(int,unsigned short) -@ thiscall -arch=i386 ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanExcludingEPKw # public: class CHString __thiscall CHString::SpanExcluding(unsigned short const *)const -@ thiscall -arch=i386 ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanIncludingEPKw # public: class CHString __thiscall CHString::SpanIncluding(unsigned short const *)const +@ stdcall -arch=i386 ?SafeStrlen@CHString@@KGHPBG@Z(wstr) _ZN8CHString10SafeStrlenEPKt # protected: static int__stdcall CHString::SafeStrlen(unsigned short const *) +@ thiscall -arch=i386 ?SetAt@CHString@@QAEXHG@Z(long long) _ZN8CHString5SetAtEit # public: void __thiscall CHString::SetAt(int,unsigned short) +@ thiscall -arch=i386 ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanExcludingEPKt # public: class CHString __thiscall CHString::SpanExcluding(unsigned short const *)const +@ thiscall -arch=i386 ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr) _ZNK8CHString13SpanIncludingEPKt # public: class CHString __thiscall CHString::SpanIncluding(unsigned short const *)const @ thiscall -arch=i386 ?TrimLeft@CHString@@QAEXXZ() _ZN8CHString8TrimLeftEv # public: void __thiscall CHString::TrimLeft(void) @ thiscall -arch=i386 ?TrimRight@CHString@@QAEXXZ() _ZN8CHString9TrimRightEv # public: void __thiscall CHString::TrimRight(void) @ thiscall -arch=i386 ?UnlockBuffer@CHString@@QAEXXZ() _ZN8CHString12UnlockBufferEv # public: void __thiscall CHString::UnlockBuffer(void) -@ thiscall -arch=i386 ??BCHString@@QBEPBGXZ(ptr) _ZNK8CHStringcvPKwEv # public: __thiscall CHString::operator unsigned short const *(void)const +@ thiscall -arch=i386 ??BCHString@@QBEPBGXZ(ptr) _ZNK8CHStringcvPKtEv # public: __thiscall CHString::operator unsigned short const *(void)const @ thiscall -arch=i386 ??YCHString@@QAEABV0@ABV0@@Z(ptr) _ZN8CHStringpLERKS_ # public: class CHString const & __thiscall CHString::operator+=(class CHString const &) @ thiscall -arch=i386 ??YCHString@@QAEABV0@D@Z(long) _ZN8CHStringpLEc # public: class CHString const & __thiscall CHString::operator+=(char) -@ thiscall -arch=i386 ??YCHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringpLEPKw # public: class CHString const & __thiscall CHString::operator+=(unsigned short const *) -@ thiscall -arch=i386 ??YCHString@@QAEABV0@G@Z(long) _ZN8CHStringpLEw # public: class CHString const & __thiscall CHString::operator+=(unsigned short) +@ thiscall -arch=i386 ??YCHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringpLEPKt # public: class CHString const & __thiscall CHString::operator+=(unsigned short const *) +@ thiscall -arch=i386 ??YCHString@@QAEABV0@G@Z(long) _ZN8CHStringpLEt # public: class CHString const & __thiscall CHString::operator+=(unsigned short) @ thiscall -arch=i386 ??4CHString@@QAEABV0@PAV0@@Z(ptr) _ZN8CHStringaSEPS_ # public: class CHString const & __thiscall CHString::operator=(class CHString *) @ thiscall -arch=i386 ??4CHString@@QAEABV0@ABV0@@Z(ptr) _ZN8CHStringaSERKS_ # public: class CHString const & __thiscall CHString::operator=(class CHString const &) @ thiscall -arch=i386 ??4CHString@@QAEABV0@PBD@Z(str) _ZN8CHStringaSEPKc # public: class CHString const & __thiscall CHString::operator=(char const *) @ thiscall -arch=i386 ??4CHString@@QAEABV0@D@Z(long) _ZN8CHStringaSEc # public: class CHString const & __thiscall CHString::operator=(char) @ thiscall -arch=i386 ??4CHString@@QAEABV0@PBE@Z(str) _ZN8CHStringaSEPKh # public: class CHString const & __thiscall CHString::operator=(unsigned char const *) -@ thiscall -arch=i386 ??4CHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringaSEPKw # public: class CHString const & __thiscall CHString::operator=(unsigned short const *) -@ thiscall -arch=i386 ??4CHString@@QAEABV0@G@Z(long) _ZN8CHStringaSEw # public: class CHString const & __thiscall CHString::operator=(unsigned short) +@ thiscall -arch=i386 ??4CHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringaSEPKt # public: class CHString const & __thiscall CHString::operator=(unsigned short const *) +@ thiscall -arch=i386 ??4CHString@@QAEABV0@G@Z(long) _ZN8CHStringaSEt # public: class CHString const & __thiscall CHString::operator=(unsigned short) @ thiscall -arch=i386 ??ACHString@@QBEGH@Z(long) _ZNK8CHStringixEi # public: unsigned short __thiscall CHString::operator[](int)const @ thiscall -arch=i386 ??1CHString@@QAE@XZ() _ZN8CHStringD1Ev # public: __thiscall CHString::~CHString(void), complete object destructor, identical to _ZN8CHStringD2Ev aka base object destructor -@ stdcall -arch=i386 ??H@YG?AVCHString@@GABV0@@Z(long ptr) _ZplwRK8CHString # class CHString __stdcall operator+(unsigned short,class CHString const &) -@ stdcall -arch=i386 ??H@YG?AVCHString@@ABV0@G@Z(ptr long) _ZplRK8CHStringw # class CHString __stdcall operator+(class CHString const &,unsigned short) -@ stdcall -arch=i386 ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) _ZplRK8CHStringPKw # class CHString __stdcall operator+(class CHString const &,unsigned short const *) -@ stdcall -arch=i386 ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr) _ZplPKwRK8CHString # class CHString __stdcall operator+(unsigned short const *,class CHString const &) +@ stdcall -arch=i386 ??H@YG?AVCHString@@GABV0@@Z(long ptr) _ZpltRK8CHString # class CHString __stdcall operator+(unsigned short,class CHString const &) +@ stdcall -arch=i386 ??H@YG?AVCHString@@ABV0@G@Z(ptr long) _ZplRK8CHStringt # class CHString __stdcall operator+(class CHString const &,unsigned short) +@ stdcall -arch=i386 ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) _ZplRK8CHStringPKt # class CHString __stdcall operator+(class CHString const &,unsigned short const *) +@ stdcall -arch=i386 ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr) _ZplPKtRK8CHString # class CHString __stdcall operator+(unsigned short const *,class CHString const &) @ stdcall -arch=i386 ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr) _ZplRK8CHStringS1_ # class CHString __stdcall operator+(class CHString const &,class CHString const &) @ thiscall -arch=i386 ?Flush@Provider@@MAEXXZ() _ZN8Provider5FlushEv # protected: virtual void __thiscall Provider::Flush(void) @ thiscall -arch=i386 ?ValidateDeletionFlags@Provider@@MAEJJ@Z(long) _ZN8Provider21ValidateDeletionFlagsEl # protected: virtual long __thiscall Provider::ValidateDeletionFlags(long) @@ -86,29 +86,29 @@ @ thiscall -arch=win64 ?AllocBuffer@CHString@@IEAAXH@Z(long) _ZN8CHString11AllocBufferEi # protected: void __thiscall CHString::AllocBuffer(int) @ thiscall -arch=win64 ?AllocCopy@CHString@@IEBAXAEAV1@HHH@Z(ptr long long long) _ZNK8CHString9AllocCopyERS_iii # protected: void __thiscall CHString::AllocCopy(class CHString &,int,int,int)const @ thiscall -arch=win64 ?AllocSysString@CHString@@QEBAPEAGXZ() _ZNK8CHString14AllocSysStringEv -@ thiscall -arch=win64 ?AssignCopy@CHString@@IEAAXHPEBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKw +@ thiscall -arch=win64 ?AssignCopy@CHString@@IEAAXHPEBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKt @ thiscall -arch=win64 ??0CHString@@QEAA@AEBV0@@Z(ptr) _ZN8CHStringC1ERKS_ @ thiscall -arch=win64 ??0CHString@@QEAA@PEBD@Z(str) _ZN8CHStringC1EPKc @ thiscall -arch=win64 ??0CHString@@QEAA@PEBE@Z(str) _ZN8CHStringC1EPKh -@ thiscall -arch=win64 ??0CHString@@QEAA@PEBG@Z(wstr) _ZN8CHStringC1EPKw -@ thiscall -arch=win64 ??0CHString@@QEAA@PEBGH@Z(wstr long) _ZN8CHStringC1EPKwi -@ thiscall -arch=win64 ??0CHString@@QEAA@GH@Z(long long) _ZN8CHStringC1Ewi +@ thiscall -arch=win64 ??0CHString@@QEAA@PEBG@Z(wstr) _ZN8CHStringC1EPKt +@ thiscall -arch=win64 ??0CHString@@QEAA@PEBGH@Z(wstr long) _ZN8CHStringC1EPKti +@ thiscall -arch=win64 ??0CHString@@QEAA@GH@Z(long long) _ZN8CHStringC1Eti @ thiscall -arch=win64 ??0CHString@@QEAA@XZ() _ZN8CHStringC1Ev # public: __thiscall CHString::CHString(void) -@ thiscall -arch=win64 ?Collate@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString7CollateEPKw # public: int __thiscall CHString::Collate(unsigned short const *)const -@ thiscall -arch=win64 ?Compare@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString7CompareEPKw # public: int __thiscall CHString::Compare(unsigned short const *)const -@ thiscall -arch=win64 ?CompareNoCase@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKw # public: int __thiscall CHString::CompareNoCase(unsigned short const *)const -@ thiscall -arch=win64 ?ConcatCopy@CHString@@IEAAXHPEBGH0@Z(long wstr long wstr) _ZN8CHString10ConcatCopyEiPKwiS1_ # protected: void __thiscall CHString::ConcatCopy(int,unsigned short const *,int,unsigned short const *) -@ thiscall -arch=win64 ?ConcatInPlace@CHString@@IEAAXHPEBG@Z(long wstr) _ZN8CHString13ConcatInPlaceEiPKw # protected: void __thiscall CHString::ConcatInPlace(int,unsigned short const *) +@ thiscall -arch=win64 ?Collate@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString7CollateEPKt # public: int __thiscall CHString::Collate(unsigned short const *)const +@ thiscall -arch=win64 ?Compare@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString7CompareEPKt # public: int __thiscall CHString::Compare(unsigned short const *)const +@ thiscall -arch=win64 ?CompareNoCase@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKt # public: int __thiscall CHString::CompareNoCase(unsigned short const *)const +@ thiscall -arch=win64 ?ConcatCopy@CHString@@IEAAXHPEBGH0@Z(long wstr long wstr) _ZN8CHString10ConcatCopyEiPKtiS1_ # protected: void __thiscall CHString::ConcatCopy(int,unsigned short const *,int,unsigned short const *) +@ thiscall -arch=win64 ?ConcatInPlace@CHString@@IEAAXHPEBG@Z(long wstr) _ZN8CHString13ConcatInPlaceEiPKt # protected: void __thiscall CHString::ConcatInPlace(int,unsigned short const *) @ thiscall -arch=win64 ?CopyBeforeWrite@CHString@@IEAAXXZ() _ZN8CHString15CopyBeforeWriteEv # protected: void __thiscall CHString::CopyBeforeWrite(void) @ thiscall -arch=win64 ?Empty@CHString@@QEAAXXZ() _ZN8CHString5EmptyEv # public: void __thiscall CHString::Empty(void) -@ thiscall -arch=win64 ?Find@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString4FindEPKw # public: int __thiscall CHString::Find(unsigned short const *)const -@ thiscall -arch=win64 ?Find@CHString@@QEBAHG@Z(long) _ZNK8CHString4FindEPKw # public: int __thiscall CHString::Find(unsigned short)const -@ thiscall -arch=win64 ?FindOneOf@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString9FindOneOfEPKw # public: int __thiscall CHString::FindOneOf(unsigned short const *)const +@ thiscall -arch=win64 ?Find@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString4FindEPKt # public: int __thiscall CHString::Find(unsigned short const *)const +@ thiscall -arch=win64 ?Find@CHString@@QEBAHG@Z(long) _ZNK8CHString4FindEt # public: int __thiscall CHString::Find(unsigned short)const +@ thiscall -arch=win64 ?FindOneOf@CHString@@QEBAHPEBG@Z(wstr) _ZNK8CHString9FindOneOfEPKt # public: int __thiscall CHString::FindOneOf(unsigned short const *)const @ thiscall -arch=win64 ?Format@CHString@@QEAAXIZZ(long long long) _ZN8CHString6FormatEjz # public: void __cdecl CHString::Format(unsigned int,...) -@ thiscall -arch=win64 ?Format@CHString@@QEAAXPEBGZZ(long wstr long) _ZN8CHString6FormatEPKwz # public: void __cdecl CHString::Format(unsigned short const *,...) +@ thiscall -arch=win64 ?Format@CHString@@QEAAXPEBGZZ(long wstr long) _ZN8CHString6FormatEPKtz # public: void __cdecl CHString::Format(unsigned short const *,...) @ thiscall -arch=win64 ?FormatMessageW@CHString@@QEAAXIZZ(long long long) _ZN8CHString14FormatMessageWEjz # public: void __cdecl CHString::FormatMessageW(unsigned int,...) -@ thiscall -arch=win64 ?FormatMessageW@CHString@@QEAAXPEBGZZ(long ptr long) _ZN8CHString14FormatMessageWEPKwz # public: void __cdecl CHString::FormatMessageW(unsigned short const *,...) -@ thiscall -arch=win64 ?FormatV@CHString@@QEAAXPEBGPEAD@Z(wstr long) _ZN8CHString7FormatVEPKwPc # public: void __thiscall CHString::FormatV(unsigned short const *,char *) +@ thiscall -arch=win64 ?FormatMessageW@CHString@@QEAAXPEBGZZ(long ptr long) _ZN8CHString14FormatMessageWEPKtz # public: void __cdecl CHString::FormatMessageW(unsigned short const *,...) +@ thiscall -arch=win64 ?FormatV@CHString@@QEAAXPEBGPEAD@Z(wstr long) _ZN8CHString7FormatVEPKtPc # public: void __thiscall CHString::FormatV(unsigned short const *,char *) @ thiscall -arch=win64 ?FreeExtra@CHString@@QEAAXXZ() _ZN8CHString9FreeExtraEv # public: void __thiscall CHString::FreeExtra(void) @ thiscall -arch=win64 ?GetAllocLength@CHString@@QEBAHXZ() _ZNK8CHString14GetAllocLengthEv # public: int __thiscall CHString::GetAllocLength(void)const @ thiscall -arch=win64 ?GetAt@CHString@@QEBAGH@Z(long) _ZNK8CHString5GetAtEi # public: unsigned short __thiscall CHString::GetAt(int)const @@ -120,7 +120,7 @@ @ thiscall -arch=win64 ?IsEmpty@CHString@@QEBAHXZ() _ZNK8CHString7IsEmptyEv # public: int __thiscall CHString::IsEmpty(void)const @ thiscall -arch=win64 ?Left@CHString@@QEBA?AV1@H@Z(long) _ZNK8CHString4LeftEi # public: class CHString __thiscall CHString::Left(int)const @ thiscall -arch=win64 ?LoadStringW@CHString@@QEAAHI@Z(long) _ZN8CHString11LoadStringWEj # public: int __thiscall CHString::LoadStringW(unsigned int) -@ thiscall -arch=win64 ?LoadStringW@CHString@@IEAAHIPEAGI@Z(long wstr long) _ZN8CHString11LoadStringWEjPwj # protected: int __thiscall CHString::LoadStringW(unsigned int,unsigned short *,unsigned int) +@ thiscall -arch=win64 ?LoadStringW@CHString@@IEAAHIPEAGI@Z(long wstr long) _ZN8CHString11LoadStringWEjPtj # protected: int __thiscall CHString::LoadStringW(unsigned int,unsigned short *,unsigned int) @ thiscall -arch=win64 ?LockBuffer@CHString@@QEAAPEAGXZ() _ZN8CHString10LockBufferEv # public: unsigned short * __thiscall CHString::LockBuffer(void) @ thiscall -arch=win64 ?MakeLower@CHString@@QEAAXXZ() _ZN8CHString9MakeLowerEv # public: void __thiscall CHString::MakeLower(void) @ thiscall -arch=win64 ?MakeReverse@CHString@@QEAAXXZ() _ZN8CHString11MakeReverseEv # public: void __thiscall CHString::MakeReverse(void) @@ -130,33 +130,33 @@ @ thiscall -arch=win64 ?Release@CHString@@KAXPEAUCHStringData@@@Z(ptr) _ZN8CHString7ReleaseEP12CHStringData # protected: static void __stdcall CHString::Release(struct CHStringData *) @ thiscall -arch=win64 ?Release@CHString@@IEAAXXZ() _ZN8CHString7ReleaseEv # protected: void __thiscall CHString::Release(void) @ thiscall -arch=win64 ?ReleaseBuffer@CHString@@QEAAXH@Z(long) _ZN8CHString13ReleaseBufferEi # public: void __thiscall CHString::ReleaseBuffer(int) -@ thiscall -arch=win64 ?ReverseFind@CHString@@QEBAHG@Z(long) _ZNK8CHString11ReverseFindEw # public: int __thiscall CHString::ReverseFind(unsigned short)const +@ thiscall -arch=win64 ?ReverseFind@CHString@@QEBAHG@Z(long) _ZNK8CHString11ReverseFindEt # public: int __thiscall CHString::ReverseFind(unsigned short)const @ thiscall -arch=win64 ?Right@CHString@@QEBA?AV1@H@Z(long) _ZNK8CHString5RightEi # public: class CHString __thiscall CHString::Right(int)const -@ stdcall -arch=win64 ?SafeStrlen@CHString@@KAHPEBG@Z(wstr) _ZN8CHString10SafeStrlenEPKw # protected: static int__stdcall CHString::SafeStrlen(unsigned short const *) -@ thiscall -arch=win64 ?SetAt@CHString@@QEAAXHG@Z(long long) _ZN8CHString5SetAtEiw # public: void __thiscall CHString::SetAt(int,unsigned short) -@ thiscall -arch=win64 ?SpanExcluding@CHString@@QEBA?AV1@PEBG@Z(long wstr) _ZNK8CHString13SpanExcludingEPKw # public: class CHString __thiscall CHString::SpanExcluding(unsigned short const *)const -@ thiscall -arch=win64 ?SpanIncluding@CHString@@QEBA?AV1@PEBG@Z(long wstr) _ZNK8CHString13SpanIncludingEPKw # public: class CHString __thiscall CHString::SpanIncluding(unsigned short const *)const +@ stdcall -arch=win64 ?SafeStrlen@CHString@@KAHPEBG@Z(wstr) _ZN8CHString10SafeStrlenEPKt # protected: static int__stdcall CHString::SafeStrlen(unsigned short const *) +@ thiscall -arch=win64 ?SetAt@CHString@@QEAAXHG@Z(long long) _ZN8CHString5SetAtEit # public: void __thiscall CHString::SetAt(int,unsigned short) +@ thiscall -arch=win64 ?SpanExcluding@CHString@@QEBA?AV1@PEBG@Z(long wstr) _ZNK8CHString13SpanExcludingEPKt # public: class CHString __thiscall CHString::SpanExcluding(unsigned short const *)const +@ thiscall -arch=win64 ?SpanIncluding@CHString@@QEBA?AV1@PEBG@Z(long wstr) _ZNK8CHString13SpanIncludingEPKt # public: class CHString __thiscall CHString::SpanIncluding(unsigned short const *)const @ thiscall -arch=win64 ?TrimLeft@CHString@@QEAAXXZ() _ZN8CHString8TrimLeftEv # public: void __thiscall CHString::TrimLeft(void) @ thiscall -arch=win64 ?TrimRight@CHString@@QEAAXXZ() _ZN8CHString9TrimRightEv # public: void __thiscall CHString::TrimRight(void) @ thiscall -arch=win64 ?UnlockBuffer@CHString@@QEAAXXZ() _ZN8CHString12UnlockBufferEv # public: void __thiscall CHString::UnlockBuffer(void) -@ thiscall -arch=win64 ??BCHString@@QEBAPEBGXZ(ptr) _ZNK8CHStringcvPKwEv # public: __thiscall CHString::operator unsigned short const *(void)const +@ thiscall -arch=win64 ??BCHString@@QEBAPEBGXZ(ptr) _ZNK8CHStringcvPKtEv # public: __thiscall CHString::operator unsigned short const *(void)const @ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@AEBV0@@Z(ptr) _ZN8CHStringpLERKS_ # public: class CHString const & __thiscall CHString::operator+=(class CHString const &) @ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@D@Z(long) _ZN8CHStringpLEc # public: class CHString const & __thiscall CHString::operator+=(char) -@ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@PEBG@Z(wstr) _ZN8CHStringpLEPKw # public: class CHString const & __thiscall CHString::operator+=(unsigned short const *) -@ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@G@Z(long) _ZN8CHStringpLEw # public: class CHString const & __thiscall CHString::operator+=(unsigned short) +@ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@PEBG@Z(wstr) _ZN8CHStringpLEPKt # public: class CHString const & __thiscall CHString::operator+=(unsigned short const *) +@ thiscall -arch=win64 ??YCHString@@QEAAAEBV0@G@Z(long) _ZN8CHStringpLEt # public: class CHString const & __thiscall CHString::operator+=(unsigned short) @ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@PEAV0@@Z(ptr) _ZN8CHStringaSEPS_ # public: class CHString const & __thiscall CHString::operator=(class CHString *) @ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@AEBV0@@Z(ptr) _ZN8CHStringaSERKS_ # public: class CHString const & __thiscall CHString::operator=(class CHString const &) @ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@PEBD@Z(str) _ZN8CHStringaSEPKc # public: class CHString const & __thiscall CHString::operator=(char const *) @ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@D@Z(long) _ZN8CHStringaSEc # public: class CHString const & __thiscall CHString::operator=(char) @ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@PEBE@Z(str) _ZN8CHStringaSEPKh # public: class CHString const & __thiscall CHString::operator=(unsigned char const *) -@ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@PEBG@Z(wstr) _ZN8CHStringaSEPKw # public: class CHString const & __thiscall CHString::operator=(unsigned short const *) -@ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@G@Z(long) _ZN8CHStringaSEw # public: class CHString const & __thiscall CHString::operator=(unsigned short) +@ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@PEBG@Z(wstr) _ZN8CHStringaSEPKt # public: class CHString const & __thiscall CHString::operator=(unsigned short const *) +@ thiscall -arch=win64 ??4CHString@@QEAAAEBV0@G@Z(long) _ZN8CHStringaSEt # public: class CHString const & __thiscall CHString::operator=(unsigned short) @ thiscall -arch=win64 ??ACHString@@QEBAGH@Z(long) _ZNK8CHStringixEi # public: unsigned short __thiscall CHString::operator[](int)const @ thiscall -arch=win64 ??1CHString@@QEAA@XZ() _ZN8CHStringD1Ev # public: __thiscall CHString::~CHString(void), complete object destructor, identical to _ZN8CHStringD2Ev aka base object destructor -@ stdcall -arch=win64 ??H@YA?AVCHString@@GAEBV0@@Z(long ptr) _ZplwRK8CHString # class CHString __stdcall operator+(unsigned short,class CHString const &) -@ stdcall -arch=win64 ??H@YA?AVCHString@@AEBV0@G@Z(ptr long) _ZplRK8CHStringw # class CHString __stdcall operator+(class CHString const &,unsigned short) -@ stdcall -arch=win64 ??H@YA?AVCHString@@AEBV0@PEBG@Z(ptr wstr) _ZplRK8CHStringPKw # class CHString __stdcall operator+(class CHString const &,unsigned short const *) -@ stdcall -arch=win64 ??H@YA?AVCHString@@PEBGAEBV0@@Z(wstr ptr) _ZplPKwRK8CHString # class CHString __stdcall operator+(unsigned short const *,class CHString const &) +@ stdcall -arch=win64 ??H@YA?AVCHString@@GAEBV0@@Z(long ptr) _ZpltRK8CHString # class CHString __stdcall operator+(unsigned short,class CHString const &) +@ stdcall -arch=win64 ??H@YA?AVCHString@@AEBV0@G@Z(ptr long) _ZplRK8CHStringt # class CHString __stdcall operator+(class CHString const &,unsigned short) +@ stdcall -arch=win64 ??H@YA?AVCHString@@AEBV0@PEBG@Z(ptr wstr) _ZplRK8CHStringPKt # class CHString __stdcall operator+(class CHString const &,unsigned short const *) +@ stdcall -arch=win64 ??H@YA?AVCHString@@PEBGAEBV0@@Z(wstr ptr) _ZplPKtRK8CHString # class CHString __stdcall operator+(unsigned short const *,class CHString const &) @ stdcall -arch=win64 ??H@YA?AVCHString@@AEBV0@0@Z(ptr ptr) _ZplRK8CHStringS1_ # class CHString __stdcall operator+(class CHString const &,class CHString const &) @ thiscall -arch=win64 ?Flush@Provider@@MEAAXXZ() _ZN8Provider5FlushEv # protected: virtual void __thiscall Provider::Flush(void) @ thiscall -arch=win64 ?ValidateDeletionFlags@Provider@@MEAAJJ@Z(long) _ZN8Provider21ValidateDeletionFlagsEl # protected: virtual long __thiscall Provider::ValidateDeletionFlags(long) diff --git a/modules/rostests/tests/dllexport/CMakeLists.txt b/modules/rostests/tests/dllexport/CMakeLists.txt index 65e87cec3bb..111921cf7f0 100644 --- a/modules/rostests/tests/dllexport/CMakeLists.txt +++ b/modules/rostests/tests/dllexport/CMakeLists.txt @@ -23,17 +23,7 @@ add_executable(dllexport_test dllexport_test.c) set_module_type(dllexport_test win32cui) add_importlibs(dllexport_test dllexport_test_dll1 msvcrt kernel32 ntdll) -# framedyn is skipped in the clang-cl build -if(NOT USE_CLANG_CL) - add_library(dllimport_test MODULE dllimport_framedyn.cpp) set_module_type(dllimport_test module) add_importlibs(dllimport_test framedyn) - -if (MSVC) - target_compile_options(dllimport_test PRIVATE /Zc:wchar_t-) -else() - target_link_libraries(dllimport_test framedynex) -endif() - -endif() +add_dependencies(dllimport_test psdk) diff --git a/sdk/include/psdk/chstring.h b/sdk/include/psdk/chstring.h index 2db344a2262..a2994bc064b 100644 --- a/sdk/include/psdk/chstring.h +++ b/sdk/include/psdk/chstring.h @@ -6,15 +6,25 @@ #include #include +/* + * Framedyn dates from ancient times when wchar_t was a typedef to unsigned short. + * In order be able to use newer compilers, we define inline overloaded wrappers. + */ +using CHSTRING_WCHAR=unsigned short ; +using CHSTRING_LPCWSTR=const CHSTRING_WCHAR*; +using CHSTRING_LPWSTR=CHSTRING_WCHAR*; +static_assert(sizeof(CHSTRING_WCHAR) == sizeof(wchar_t), "CHSTRING_WCHAR must be of same size than wchar_t"); + + struct CHStringData { long nRefs; int nDataLength; int nAllocLength; - WCHAR* data() + CHSTRING_WCHAR* data() { - return (WCHAR*)(this+1); + return (CHSTRING_WCHAR*)(this+1); } }; @@ -22,109 +32,346 @@ class CHString { public: CHString(); - CHString(WCHAR ch, int nRepeat = 1); - CHString(LPCWSTR lpsz); - CHString(LPCWSTR lpch, int nLength); + CHString(CHSTRING_WCHAR ch, int nRepeat = 1); + CHString(CHSTRING_LPCWSTR lpsz); + CHString(CHSTRING_LPCWSTR lpch, int nLength); CHString(LPCSTR lpsz); CHString(const CHString& stringSrc); CHString(const unsigned char* lpsz); ~CHString(); - BSTR AllocSysString() const; - int Collate(LPCWSTR lpsz) const; - int Compare(LPCWSTR lpsz) const; - int CompareNoCase(LPCWSTR lpsz) const; + CHSTRING_LPWSTR AllocSysString() const; + int Collate(CHSTRING_LPCWSTR lpsz) const; + int Collate(const wchar_t* lpsz) const + { + return Collate(reinterpret_cast(lpsz)); + } + int Compare(CHSTRING_LPCWSTR lpsz) const; + int Compare(const wchar_t* lpsz) const + { + return Compare(reinterpret_cast(lpsz)); + } + int CompareNoCase(CHSTRING_LPCWSTR lpsz) const; + int CompareNoCase(const wchar_t* lpsz) const + { + return CompareNoCase(reinterpret_cast(lpsz)); + } void Empty(); - int Find(WCHAR ch) const; - int Find(LPCWSTR lpszSub) const; - int FindOneOf(LPCWSTR lpszCharSet) const; + int Find(CHSTRING_WCHAR ch) const; + int Find(CHSTRING_LPCWSTR lpszSub) const; + int Find(const wchar_t* lpszSub) const + { + return FindOneOf(reinterpret_cast(lpszSub)); + } + int FindOneOf(CHSTRING_LPCWSTR lpszCharSet) const; + int FindOneOf(const wchar_t* lpszCharSet) const + { + return FindOneOf(reinterpret_cast(lpszCharSet)); + } void Format(UINT nFormatID, ...); - void Format(LPCWSTR lpszFormat, ...); + void Format(CHSTRING_LPCWSTR lpszFormat, ...); + template + void Format(const wchar_t* lpszFormat, Params&&... params) + { + Format(reinterpret_cast(lpszFormat), params...); + } void FormatMessageW(UINT nFormatID, ...); - void FormatMessageW(LPCWSTR lpszFormat, ...); - void FormatV(LPCWSTR lpszFormat, va_list argList); + void FormatMessageW(CHSTRING_LPCWSTR lpszFormat, ...); + template + void FormatMessageW(const wchar_t* lpszFormat, Params&&... params) + { + FormatMessageW(reinterpret_cast(lpszFormat), params...); + } + void FormatV(CHSTRING_LPCWSTR lpszFormat, va_list argList); + void FormatV(const wchar_t* lpszFormat, va_list argList) + { + return FormatV(reinterpret_cast(lpszFormat), argList); + } void FreeExtra(); int GetAllocLength() const; - WCHAR GetAt(int nIndex) const; - LPWSTR GetBuffer(int nMinBufLength); - LPWSTR GetBufferSetLength(int nNewLength); + CHSTRING_WCHAR GetAt(int nIndex) const; + CHSTRING_LPWSTR GetBuffer(int nMinBufLength); + CHSTRING_LPWSTR GetBufferSetLength(int nNewLength); int GetLength() const; BOOL IsEmpty() const; CHString Left(int nCount) const; int LoadStringW(UINT nID); - LPWSTR LockBuffer(); + CHSTRING_LPWSTR LockBuffer(); void MakeLower(); void MakeReverse(); void MakeUpper(); CHString Mid(int nFirst) const; CHString Mid(int nFirst, int nCount) const; void ReleaseBuffer(int nNewLength = -1); - int ReverseFind(WCHAR ch) const; + int ReverseFind(CHSTRING_WCHAR ch) const; CHString Right(int nCount) const; - void SetAt(int nIndex, WCHAR ch); - CHString SpanExcluding(LPCWSTR lpszCharSet) const; - CHString SpanIncluding(LPCWSTR lpszCharSet) const; + void SetAt(int nIndex, CHSTRING_WCHAR ch); + CHString SpanExcluding(CHSTRING_LPCWSTR lpszCharSet) const; + CHString SpanExcluding(const wchar_t* lpszCharSet) const + { + return SpanExcluding(reinterpret_cast(lpszCharSet)); + } + CHString SpanIncluding(CHSTRING_LPCWSTR lpszCharSet) const; + CHString SpanIncluding(const wchar_t* lpszCharSet) const + { + return SpanIncluding(reinterpret_cast(lpszCharSet)); + } void TrimLeft(); void TrimRight(); void UnlockBuffer(); const CHString& operator=(char ch); - const CHString& operator=(WCHAR ch); + const CHString& operator=(CHSTRING_WCHAR ch); const CHString& operator=(CHString *p); const CHString& operator=(LPCSTR lpsz); - const CHString& operator=(LPCWSTR lpsz); + const CHString& operator=(CHSTRING_LPCWSTR lpsz); const CHString& operator=(const CHString& stringSrc); const CHString& operator=(const unsigned char* lpsz); const CHString& operator+=(char ch); - const CHString& operator+=(WCHAR ch); - const CHString& operator+=(LPCWSTR lpsz); + const CHString& operator+=(CHSTRING_WCHAR ch); + const CHString& operator+=(CHSTRING_LPCWSTR lpsz); const CHString& operator+=(const CHString& string); - WCHAR operator[](int nIndex) const; + CHSTRING_WCHAR operator[](int nIndex) const; - operator LPCWSTR() const; + operator CHSTRING_LPCWSTR() const; - friend CHString WINAPI operator+(WCHAR ch, const CHString& string); - friend CHString WINAPI operator+(const CHString& string, WCHAR ch); - friend CHString WINAPI operator+(const CHString& string, LPCWSTR lpsz); - friend CHString WINAPI operator+(LPCWSTR lpsz, const CHString& string); + friend CHString WINAPI operator+(CHSTRING_WCHAR ch, const CHString& string); + friend CHString WINAPI operator+(const CHString& string, CHSTRING_WCHAR ch); + friend CHString WINAPI operator+(const CHString& string, CHSTRING_LPCWSTR lpsz); + friend CHString WINAPI operator+(CHSTRING_LPCWSTR lpsz, const CHString& string); friend CHString WINAPI operator+(const CHString& string1, const CHString& string2); protected: - LPWSTR m_pchData; + CHSTRING_LPWSTR m_pchData; void AllocBeforeWrite(int nLen); void AllocBuffer(int nLen); void AllocCopy(CHString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const; - void AssignCopy(int nSrcLen, LPCWSTR lpszSrcData); - void ConcatCopy(int nSrc1Len, LPCWSTR lpszSrc1Data, int nSrc2Len, LPCWSTR lpszSrc2Data); - void ConcatInPlace(int nSrcLen, LPCWSTR lpszSrcData); + void AssignCopy(int nSrcLen, CHSTRING_LPCWSTR lpszSrcData); + void AssignCopy(int nSrcLen, const wchar_t* lpszSrcData) + { + AssignCopy(nSrcLen, reinterpret_cast(lpszSrcData)); + } + void ConcatCopy(int nSrc1Len, CHSTRING_LPCWSTR lpszSrc1Data, int nSrc2Len, CHSTRING_LPCWSTR lpszSrc2Data); + void ConcatCopy(int nSrc1Len, const wchar_t* lpszSrc1Data, int nSrc2Len, const wchar_t* lpszSrc2Data) + { + ConcatCopy(nSrc1Len, reinterpret_cast(lpszSrc1Data), nSrc2Len, reinterpret_cast(lpszSrc2Data)); + } + void ConcatInPlace(int nSrcLen, CHSTRING_LPCWSTR lpszSrcData); + void ConcatInPlace(int nSrcLen, const wchar_t* lpszSrcData) + { + ConcatInPlace(nSrcLen, reinterpret_cast(lpszSrcData)); + } void CopyBeforeWrite(); CHStringData* GetData() const; void Init(); - int LoadStringW(UINT nID, LPWSTR lpszBuf, UINT nMaxBuf); + int LoadStringW(UINT nID, CHSTRING_LPWSTR lpszBuf, UINT nMaxBuf); void Release(); static void WINAPI Release(CHStringData* pData); - static int WINAPI SafeStrlen(LPCWSTR lpsz); + static int WINAPI SafeStrlen(CHSTRING_LPCWSTR lpsz); + static int WINAPI SafeStrlen(const wchar_t* lpsz) + { + return SafeStrlen(reinterpret_cast(lpsz)); + } }; -inline BOOL operator==(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) == 0; } +inline BOOL operator==(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) == 0; } inline BOOL operator==(const CHString& s1, const CHString& s2) { return s1.Compare(s2) == 0; } -inline BOOL operator!=(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) != 0; } +inline BOOL operator!=(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) != 0; } inline BOOL operator!=(const CHString& s1, const CHString& s2) { return s1.Compare(s2) != 0; } -inline BOOL operator<(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) < 0; } +inline BOOL operator<(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) < 0; } inline BOOL operator<(const CHString& s1, const CHString& s2) { return s1.Compare(s2) < 0; } -inline BOOL operator>(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) > 0; } +inline BOOL operator>(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) > 0; } inline BOOL operator>(const CHString& s1, const CHString& s2) { return s1.Compare(s2) > 0; } -inline BOOL operator<=(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) <= 0; } +inline BOOL operator<=(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) <= 0; } inline BOOL operator<=(const CHString& s1, const CHString& s2) { return s1.Compare(s2) <= 0; } -inline BOOL operator>=(const CHString& s1, LPCWSTR s2) { return s1.Compare(s2) >= 0; } +inline BOOL operator>=(const CHString& s1, CHSTRING_LPCWSTR s2) { return s1.Compare(s2) >= 0; } inline BOOL operator>=(const CHString& s1, const CHString& s2) { return s1.Compare(s2) >= 0; } +/* Have GCC link to the symbols exported by framedyn.dll */ +#ifdef __GNUC__ + +#define DEFINE_FRAMEDYN_ALIAS(alias, orig) __asm__(".set " #alias ", \"" #orig "\""); + +#ifdef _M_IX86 +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString16AllocBeforeWriteEi, ?AllocBeforeWrite@CHString@@IAEXH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString11AllocBufferEi, ?AllocBuffer@CHString@@IAEXH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString9AllocCopyERS_iii, ?AllocCopy@CHString@@IBEXAAV1@HHH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString14AllocSysStringEv, ?AllocSysString@CHString@@QBEPAGXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString10AssignCopyEiPKt, ?AssignCopy@CHString@@IAEXHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1ERKS_, ??0CHString@@QAE@ABV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1EPKc, ??0CHString@@QAE@PBD@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1EPKh, ??0CHString@@QAE@PBE@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1EPKt, ??0CHString@@QAE@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1EPKti, ??0CHString@@QAE@PBGH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1Eti, ??0CHString@@QAE@GH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC1Ev, ??0CHString@@QAE@XZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringC2Ev, ??0CHString@@QAE@XZ) // CHString::CHString(void) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString7CollateEPKt, ?Collate@CHString@@QBEHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString7CompareEPKt, ?Compare@CHString@@QBEHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString13CompareNoCaseEPKt, ?CompareNoCase@CHString@@QBEHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString10ConcatCopyEiPKtiS1_, ?ConcatCopy@CHString@@IAEXHPBGH0@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString13ConcatInPlaceEiPKt, ?ConcatInPlace@CHString@@IAEXHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString15CopyBeforeWriteEv, ?CopyBeforeWrite@CHString@@IAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString5EmptyEv, ?Empty@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString4FindEPKt, ?Find@CHString@@QBEHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString4FindEt, ?Find@CHString@@QBEHG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString9FindOneOfEPKt, ?FindOneOf@CHString@@QBEHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString6FormatEjz, ?Format@CHString@@QAAXIZZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString6FormatEPKtz, ?Format@CHString@@QAAXPBGZZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString14FormatMessageWEjz, ?FormatMessageW@CHString@@QAAXIZZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString14FormatMessageWEPKtz, ?FormatMessageW@CHString@@QAAXPBGZZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString7FormatVEPKtPc, ?FormatV@CHString@@QAEXPBGPAD@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString9FreeExtraEv, ?FreeExtra@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString14GetAllocLengthEv, ?GetAllocLength@CHString@@QBEHXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString5GetAtEi, ?GetAt@CHString@@QBEGH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString9GetBufferEi, ?GetBuffer@CHString@@QAEPAGH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString18GetBufferSetLengthEi, ?GetBufferSetLength@CHString@@QAEPAGH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString7GetDataEv, ?GetData@CHString@@IBEPAUCHStringData@@XZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString9GetLengthEv, ?GetLength@CHString@@QBEHXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString4InitEv, ?Init@CHString@@IAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString7IsEmptyEv, ?IsEmpty@CHString@@QBEHXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString4LeftEi, ?Left@CHString@@QBE?AV1@H@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString11LoadStringWEj, ?LoadStringW@CHString@@QAEHI@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString11LoadStringWEjPtj, ?LoadStringW@CHString@@IAEHIPAGI@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString10LockBufferEv, ?LockBuffer@CHString@@QAEPAGXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString9MakeLowerEv, ?MakeLower@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString11MakeReverseEv, ?MakeReverse@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString9MakeUpperEv, ?MakeUpper@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString3MidEi, ?Mid@CHString@@QBE?AV1@H@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString3MidEii, ?Mid@CHString@@QBE?AV1@HH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString7ReleaseEP12CHStringData@4, ?Release@CHString@@KGXPAUCHStringData@@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString7ReleaseEv, ?Release@CHString@@IAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString13ReleaseBufferEi, ?ReleaseBuffer@CHString@@QAEXH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString11ReverseFindEt, ?ReverseFind@CHString@@QBEHG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString5RightEi, ?Right@CHString@@QBE?AV1@H@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString10SafeStrlenEPKt@4, ?SafeStrlen@CHString@@KGHPBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString5SetAtEit, ?SetAt@CHString@@QAEXHG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString13SpanExcludingEPKt, ?SpanExcluding@CHString@@QBE?AV1@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHString13SpanIncludingEPKt, ?SpanIncluding@CHString@@QBE?AV1@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString8TrimLeftEv, ?TrimLeft@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString9TrimRightEv, ?TrimRight@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHString12UnlockBufferEv, ?UnlockBuffer@CHString@@QAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHStringcvPKwEv, ??BCHString@@QBEPBGXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringpLERKS_, ??YCHString@@QAEABV0@ABV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringpLEc, ??YCHString@@QAEABV0@D@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringpLEPKw, ??YCHString@@QAEABV0@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringpLEw, ??YCHString@@QAEABV0@G@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEPS_, ??4CHString@@QAEABV0@PAV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSERKS_, ??4CHString@@QAEABV0@ABV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEPKc, ??4CHString@@QAEABV0@PBD@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEc, ??4CHString@@QAEABV0@D@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEPKh, ??4CHString@@QAEABV0@PBE@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEPKw, ??4CHString@@QAEABV0@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringaSEw, ??4CHString@@QAEABV0@G@Z) +DEFINE_FRAMEDYN_ALIAS(__ZNK8CHStringixEi, ??ACHString@@QBEGH@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringD1Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() complete object destructor +DEFINE_FRAMEDYN_ALIAS(__ZN8CHStringD2Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() base object destructor +DEFINE_FRAMEDYN_ALIAS(__ZplwRK8CHString, ??H@YG?AVCHString@@GABV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZplRK8CHStringw, ??H@YG?AVCHString@@ABV0@G@Z) +DEFINE_FRAMEDYN_ALIAS(__ZplRK8CHStringPKw, ??H@YG?AVCHString@@ABV0@PBG@Z) +DEFINE_FRAMEDYN_ALIAS(__ZplPKwRK8CHString, ??H@YG?AVCHString@@PBGABV0@@Z) +DEFINE_FRAMEDYN_ALIAS(__ZplRK8CHStringS1_, ??H@YG?AVCHString@@ABV0@0@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8Provider5FlushEv, ?Flush@Provider@@MAEXXZ) +DEFINE_FRAMEDYN_ALIAS(__ZN8Provider21ValidateDeletionFlagsEl, ?ValidateDeletionFlags@Provider@@MAEJJ@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8Provider19ValidateMethodFlagsEl, ?ValidateMethodFlags@Provider@@MAEJJ@Z) +DEFINE_FRAMEDYN_ALIAS(__ZN8Provider18ValidateQueryFlagsEl, ?ValidateQueryFlags@Provider@@MAEJJ@Z) +#elif defined(_M_AMD64) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString16AllocBeforeWriteEi, ?AllocBeforeWrite@CHString@@IEAAXH@Z) // protected: void __thiscall CHString::AllocBeforeWrite(int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString11AllocBufferEi, ?AllocBuffer@CHString@@IEAAXH@Z) // protected: void __thiscall CHString::AllocBuffer(int) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString9AllocCopyERS_iii, ?AllocCopy@CHString@@IEBAXAEAV1@HHH@Z) // protected: void __thiscall CHString::AllocCopy(class CHString &,int,int,int)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString14AllocSysStringEv, ?AllocSysString@CHString@@QEBAPEAGXZ) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString10AssignCopyEiPKt, ?AssignCopy@CHString@@IEAAXHPEBG@Z) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1ERKS_, ??0CHString@@QEAA@AEBV0@@Z) // CHString::CHString(CHString const&) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1EPKc, ??0CHString@@QEAA@PEBD@Z) // CHString::CHString(char const*) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1EPKh, ??0CHString@@QEAA@PEBE@Z) // CHString::CHString(unsigned char const*) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1EPKt, ??0CHString@@QEAA@PEBG@Z) // CHString::CHString(unsigned short const*) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1EPKti, ??0CHString@@QEAA@PEBGH@Z) // CHString::CHString(unsigned short const*, int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1Eti, ??0CHString@@QEAA@GH@Z) // CHString::CHString(unsigned short, int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC1Ev, ??0CHString@@QEAA@XZ) // public: __thiscall CHString::CHString(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringC2Ev, ??0CHString@@QEAA@XZ) // public: __thiscall CHString::CHString(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString7CollateEPKt, ?Collate@CHString@@QEBAHPEBG@Z) // public: int __thiscall CHString::Collate(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString7CompareEPKt, ?Compare@CHString@@QEBAHPEBG@Z) // public: int __thiscall CHString::Compare(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString13CompareNoCaseEPKt, ?CompareNoCase@CHString@@QEBAHPEBG@Z) // public: int __thiscall CHString::CompareNoCase(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString10ConcatCopyEiPKtiS1_, ?ConcatCopy@CHString@@IEAAXHPEBGH0@Z) // protected: void __thiscall CHString::ConcatCopy(int,unsigned short const *,int,unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString13ConcatInPlaceEiPKt, ?ConcatInPlace@CHString@@IEAAXHPEBG@Z) // protected: void __thiscall CHString::ConcatInPlace(int,unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString15CopyBeforeWriteEv, ?CopyBeforeWrite@CHString@@IEAAXXZ) // protected: void __thiscall CHString::CopyBeforeWrite(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString5EmptyEv, ?Empty@CHString@@QEAAXXZ) // public: void __thiscall CHString::Empty(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString4FindEPKt, ?Find@CHString@@QEBAHPEBG@Z) // public: int __thiscall CHString::Find(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString4FindEt, ?Find@CHString@@QEBAHG@Z) // public: int __thiscall CHString::Find(unsigned short)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString9FindOneOfEPKt, ?FindOneOf@CHString@@QEBAHPEBG@Z) // public: int __thiscall CHString::FindOneOf(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString6FormatEjz, ?Format@CHString@@QEAAXIZZ) // public: void __cdecl CHString::Format(unsigned int,...) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString6FormatEPKtz, ?Format@CHString@@QEAAXPEBGZZ) // public: void __cdecl CHString::Format(unsigned short const *,...) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString14FormatMessageWEjz, ?FormatMessageW@CHString@@QEAAXIZZ) // public: void __cdecl CHString::FormatMessageW(unsigned int,...) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString14FormatMessageWEPKtz, ?FormatMessageW@CHString@@QEAAXPEBGZZ) // public: void __cdecl CHString::FormatMessageW(unsigned short const *,...) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString7FormatVEPKtPc, ?FormatV@CHString@@QEAAXPEBGPEAD@Z) // public: void __thiscall CHString::FormatV(unsigned short const *,char *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString9FreeExtraEv, ?FreeExtra@CHString@@QEAAXXZ) // public: void __thiscall CHString::FreeExtra(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString14GetAllocLengthEv, ?GetAllocLength@CHString@@QEBAHXZ) // public: int __thiscall CHString::GetAllocLength(void)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString5GetAtEi, ?GetAt@CHString@@QEBAGH@Z) // public: unsigned short __thiscall CHString::GetAt(int)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString9GetBufferEi, ?GetBuffer@CHString@@QEAAPEAGH@Z) // public: unsigned short * __thiscall CHString::GetBuffer(int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString18GetBufferSetLengthEi, ?GetBufferSetLength@CHString@@QEAAPEAGH@Z) // public: unsigned short * __thiscall CHString::GetBufferSetLength(int) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString7GetDataEv, ?GetData@CHString@@IEBAPEAUCHStringData@@XZ) // protected: struct CHStringData * __thiscall CHString::GetData(void)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString9GetLengthEv, ?GetLength@CHString@@QEBAHXZ) // public: int __thiscall CHString::GetLength(void)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString4InitEv, ?Init@CHString@@IEAAXXZ) // protected: void __thiscall CHString::Init(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString7IsEmptyEv, ?IsEmpty@CHString@@QEBAHXZ) // public: int __thiscall CHString::IsEmpty(void)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString4LeftEi, ?Left@CHString@@QEBA?AV1@H@Z) // public: class CHString __thiscall CHString::Left(int)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString11LoadStringWEj, ?LoadStringW@CHString@@QEAAHI@Z) // public: int __thiscall CHString::LoadStringW(unsigned int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString11LoadStringWEjPtj, ?LoadStringW@CHString@@IEAAHIPEAGI@Z) // protected: int __thiscall CHString::LoadStringW(unsigned int,unsigned short *,unsigned int) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString10LockBufferEv, ?LockBuffer@CHString@@QEAAPEAGXZ) // public: unsigned short * __thiscall CHString::LockBuffer(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString9MakeLowerEv, ?MakeLower@CHString@@QEAAXXZ) // public: void __thiscall CHString::MakeLower(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString11MakeReverseEv, ?MakeReverse@CHString@@QEAAXXZ) // public: void __thiscall CHString::MakeReverse(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString9MakeUpperEv, ?MakeUpper@CHString@@QEAAXXZ) // public: void __thiscall CHString::MakeUpper(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString3MidEi, ?Mid@CHString@@QEBA?AV1@H@Z) // public: class CHString __thiscall CHString::Mid(int)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString3MidEii, ?Mid@CHString@@QEBA?AV1@HH@Z) // public: class CHString __thiscall CHString::Mid(int,int)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString7ReleaseEP12CHStringData, ?Release@CHString@@KAXPEAUCHStringData@@@Z) // protected: static void __stdcall CHString::Release(struct CHStringData *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString7ReleaseEv, ?Release@CHString@@IEAAXXZ) // protected: void __thiscall CHString::Release(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString13ReleaseBufferEi, ?ReleaseBuffer@CHString@@QEAAXH@Z) // public: void __thiscall CHString::ReleaseBuffer(int) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString11ReverseFindEt, ?ReverseFind@CHString@@QEBAHG@Z) // public: int __thiscall CHString::ReverseFind(unsigned short)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString5RightEi, ?Right@CHString@@QEBA?AV1@H@Z) // public: class CHString __thiscall CHString::Right(int)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString10SafeStrlenEPKt, ?SafeStrlen@CHString@@KAHPEBG@Z) // protected: static int__stdcall CHString::SafeStrlen(unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString5SetAtEit, ?SetAt@CHString@@QEAAXHG@Z) // public: void __thiscall CHString::SetAt(int,unsigned short) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString13SpanExcludingEPKt, ?SpanExcluding@CHString@@QEBA?AV1@PEBG@Z) // public: class CHString __thiscall CHString::SpanExcluding(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHString13SpanIncludingEPKt, ?SpanIncluding@CHString@@QEBA?AV1@PEBG@Z) // public: class CHString __thiscall CHString::SpanIncluding(unsigned short const *)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString8TrimLeftEv, ?TrimLeft@CHString@@QEAAXXZ) // public: void __thiscall CHString::TrimLeft(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString9TrimRightEv, ?TrimRight@CHString@@QEAAXXZ) // public: void __thiscall CHString::TrimRight(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHString12UnlockBufferEv, ?UnlockBuffer@CHString@@QEAAXXZ) // public: void __thiscall CHString::UnlockBuffer(void) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHStringcvPKtEv, ??BCHString@@QEBAPEBGXZ) // public: __thiscall CHString::operator unsigned short const *(void)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringpLERKS_, ??YCHString@@QEAAAEBV0@AEBV0@@Z) // public: class CHString const & __thiscall CHString::operator+=(class CHString const &) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringpLEc, ??YCHString@@QEAAAEBV0@D@Z) // public: class CHString const & __thiscall CHString::operator+=(char) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringpLEPKt, ??YCHString@@QEAAAEBV0@PEBG@Z) // public: class CHString const & __thiscall CHString::operator+=(unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringpLEt, ??YCHString@@QEAAAEBV0@G@Z) // public: class CHString const & __thiscall CHString::operator+=(unsigned short) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEPS_, ??4CHString@@QEAAAEBV0@PEAV0@@Z) // public: class CHString const & __thiscall CHString::operator=(class CHString *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSERKS_, ??4CHString@@QEAAAEBV0@AEBV0@@Z) // public: class CHString const & __thiscall CHString::operator=(class CHString const &) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEPKc, ??4CHString@@QEAAAEBV0@PEBD@Z) // public: class CHString const & __thiscall CHString::operator=(char const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEc, ??4CHString@@QEAAAEBV0@D@Z) // public: class CHString const & __thiscall CHString::operator=(char) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEPKh, ??4CHString@@QEAAAEBV0@PEBE@Z) // public: class CHString const & __thiscall CHString::operator=(unsigned char const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEPKt, ??4CHString@@QEAAAEBV0@PEBG@Z) // public: class CHString const & __thiscall CHString::operator=(unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringaSEt, ??4CHString@@QEAAAEBV0@G@Z) // public: class CHString const & __thiscall CHString::operator=(unsigned short) +DEFINE_FRAMEDYN_ALIAS(_ZNK8CHStringixEi, ??ACHString@@QEBAGH@Z) // public: unsigned short __thiscall CHString::operator[](int)const +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringD1Ev, ??1CHString@@QEAA@XZ) // public: __thiscall CHString::~CHString(void), complete object destructor +DEFINE_FRAMEDYN_ALIAS(_ZN8CHStringD2Ev, ??1CHString@@QEAA@XZ) // public: __thiscall CHString::~CHString(void), base object destructor +DEFINE_FRAMEDYN_ALIAS(_ZpltRK8CHString, ??H@YA?AVCHString@@GAEBV0@@Z) // class CHString __stdcall operator+(unsigned short,class CHString const &) +DEFINE_FRAMEDYN_ALIAS(_ZplRK8CHStringt, ??H@YA?AVCHString@@AEBV0@G@Z) // class CHString __stdcall operator+(class CHString const &,unsigned short) +DEFINE_FRAMEDYN_ALIAS(_ZplRK8CHStringPKt, ??H@YA?AVCHString@@AEBV0@PEBG@Z) // class CHString __stdcall operator+(class CHString const &,unsigned short const *) +DEFINE_FRAMEDYN_ALIAS(_ZplPKtRK8CHString, ??H@YA?AVCHString@@PEBGAEBV0@@Z) // class CHString __stdcall operator+(unsigned short const *,class CHString const &) +DEFINE_FRAMEDYN_ALIAS(_ZplRK8CHStringS1_, ??H@YA?AVCHString@@AEBV0@0@Z) // class CHString __stdcall operator+(class CHString const &,class CHString const &) +DEFINE_FRAMEDYN_ALIAS(_ZN8Provider5FlushEv, ?Flush@Provider@@MEAAXXZ) // protected: virtual void __thiscall Provider::Flush(void) +DEFINE_FRAMEDYN_ALIAS(_ZN8Provider21ValidateDeletionFlagsEl, ?ValidateDeletionFlags@Provider@@MEAAJJ@Z) // protected: virtual long __thiscall Provider::ValidateDeletionFlags(long) +DEFINE_FRAMEDYN_ALIAS(_ZN8Provider19ValidateMethodFlagsEl, ?ValidateMethodFlags@Provider@@MEAAJJ@Z) // protected: virtual long __thiscall Provider::ValidateMethodFlags(long) +DEFINE_FRAMEDYN_ALIAS(_ZN8Provider18ValidateQueryFlagsEl, ?ValidateQueryFlags@Provider@@MEAAJJ@Z) // protected: virtual long __thiscall Provider::ValidateQueryFlags(long) +#else +#error Unsupported arch +#endif + +#undef DEFINE_FRAMEDYN_ALIAS + +#endif // __GNUC__ + #endif