https://git.reactos.org/?p=reactos.git;a=commitdiff;h=061c7ecb1ae9a752bf84ed039765a43f5c1b3abe

commit 061c7ecb1ae9a752bf84ed039765a43f5c1b3abe
Author:     Jérôme Gardou <[email protected]>
AuthorDate: Thu Apr 29 10:53:08 2021 +0200
Commit:     Jérôme Gardou <[email protected]>
CommitDate: Mon May 3 22:00:57 2021 +0200

    [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 ++++-----
 modules/rostests/tests/dllexport/CMakeLists.txt |  12 +-
 sdk/include/psdk/chstring.h                     | 337 ++++++++++++++++++++----
 7 files changed, 448 insertions(+), 302 deletions(-)

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 <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
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<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;
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 <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

Reply via email to