[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
This commit is contained in:
Jérôme Gardou 2021-04-29 10:53:08 +02:00 committed by Jérôme Gardou
parent a8255233f8
commit 061c7ecb1a
7 changed files with 448 additions and 302 deletions

View file

@ -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)

View file

@ -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()

View file

@ -1,98 +0,0 @@
#include <asm.inc>
.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

View file

@ -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<LPWSTR>(m_pchData),
reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData),
reinterpret_cast<LPCWSTR>(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<LPWSTR>(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<LPWSTR>(dest.m_pchData),
reinterpret_cast<LPWSTR>(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<LPWSTR>(m_pchData), GetData()->nDataLength);
if (!SysString)
{
throw HeapException;
}
return SysString;
return reinterpret_cast<CHSTRING_LPWSTR>(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<LPWSTR>(m_pchData),
reinterpret_cast<LPCWSTR>(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<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData + GetData()->nDataLength),
reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData),
reinterpret_cast<LPCWSTR>(lpszSrc1Data),
nSrc1Len);
wcsncpy(reinterpret_cast<LPWSTR>(m_pchData + nSrc1Len),
reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData),
reinterpret_cast<LPCWSTR>(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<CHSTRING_LPCWSTR>(wcschr(reinterpret_cast<LPCWSTR>(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<CHSTRING_LPCWSTR>(wcsstr(reinterpret_cast<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<CHSTRING_LPCWSTR>(wcspbrk(reinterpret_cast<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPWSTR>(m_pchData));
}
/*
@ -854,7 +871,7 @@ void CHString::MakeReverse()
CopyBeforeWrite();
// Let's use appropriate helper
_wcsrev(m_pchData);
_wcsrev(reinterpret_cast<LPWSTR>(m_pchData));
}
/*
@ -866,7 +883,7 @@ void CHString::MakeUpper()
CopyBeforeWrite();
// Let's use appropriate helper
_wcsupr(m_pchData);
_wcsupr(reinterpret_cast<LPWSTR>(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<LPCWSTR>(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<CHSTRING_WCHAR*>(wcsrchr(reinterpret_cast<LPCWSTR>(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<LPCWSTR>(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<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPCWSTR>(m_pchData), reinterpret_cast<LPCWSTR>(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<LPWSTR>(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;

View file

@ -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)

View file

@ -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)

View file

@ -6,15 +6,25 @@
#include <windows.h>
#include <provexce.h>
/*
* 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<CHSTRING_LPCWSTR>(lpsz));
}
int Compare(CHSTRING_LPCWSTR lpsz) const;
int Compare(const wchar_t* lpsz) const
{
return Compare(reinterpret_cast<CHSTRING_LPCWSTR>(lpsz));
}
int CompareNoCase(CHSTRING_LPCWSTR lpsz) const;
int CompareNoCase(const wchar_t* lpsz) const
{
return CompareNoCase(reinterpret_cast<CHSTRING_LPCWSTR>(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<CHSTRING_LPCWSTR>(lpszSub));
}
int FindOneOf(CHSTRING_LPCWSTR lpszCharSet) const;
int FindOneOf(const wchar_t* lpszCharSet) const
{
return FindOneOf(reinterpret_cast<CHSTRING_LPCWSTR>(lpszCharSet));
}
void Format(UINT nFormatID, ...);
void Format(LPCWSTR lpszFormat, ...);
void Format(CHSTRING_LPCWSTR lpszFormat, ...);
template <typename ...Params>
void Format(const wchar_t* lpszFormat, Params&&... params)
{
Format(reinterpret_cast<CHSTRING_LPCWSTR>(lpszFormat), params...);
}
void FormatMessageW(UINT nFormatID, ...);
void FormatMessageW(LPCWSTR lpszFormat, ...);
void FormatV(LPCWSTR lpszFormat, va_list argList);
void FormatMessageW(CHSTRING_LPCWSTR lpszFormat, ...);
template <typename ...Params>
void FormatMessageW(const wchar_t* lpszFormat, Params&&... params)
{
FormatMessageW(reinterpret_cast<CHSTRING_LPCWSTR>(lpszFormat), params...);
}
void FormatV(CHSTRING_LPCWSTR lpszFormat, va_list argList);
void FormatV(const wchar_t* lpszFormat, va_list argList)
{
return FormatV(reinterpret_cast<CHSTRING_LPCWSTR>(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<CHSTRING_LPCWSTR>(lpszCharSet));
}
CHString SpanIncluding(CHSTRING_LPCWSTR lpszCharSet) const;
CHString SpanIncluding(const wchar_t* lpszCharSet) const
{
return SpanIncluding(reinterpret_cast<CHSTRING_LPCWSTR>(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<CHSTRING_LPCWSTR>(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<CHSTRING_LPCWSTR>(lpszSrc1Data), nSrc2Len, reinterpret_cast<CHSTRING_LPCWSTR>(lpszSrc2Data));
}
void ConcatInPlace(int nSrcLen, CHSTRING_LPCWSTR lpszSrcData);
void ConcatInPlace(int nSrcLen, const wchar_t* lpszSrcData)
{
ConcatInPlace(nSrcLen, reinterpret_cast<CHSTRING_LPCWSTR>(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<CHSTRING_LPCWSTR>(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