[FRAMEDYN]

- Fix MSVC build
- Fix some name mangling issues
- Add stub libraries to make the dll actually usable. The GCC alias library is still broken though.

svn path=/trunk/; revision=60037
This commit is contained in:
Thomas Faber 2013-09-11 18:36:27 +00:00
parent 9ec7c23c83
commit 14fc5d4748
7 changed files with 216 additions and 60 deletions

View file

@ -1,16 +1,32 @@
set_cpp(WITH_RUNTIME)
list(APPEND SOURCE main.c chstring.cpp)
set_cpp(WITH_RUNTIME WITH_EXCEPTIONS)
if(NOT MSVC)
spec2def(framedyn.dll framedyn_gcc.spec ADD_IMPORTLIB)
else()
spec2def(framedyn.dll framedyn_msvc.spec ADD_IMPORTLIB)
endif()
list(APPEND SOURCE
main.c
chstring.cpp
${CMAKE_CURRENT_BINARY_DIR}/framedyn.def)
add_library(framedyn SHARED ${SOURCE})
set_module_type(framedyn win32dll UNICODE)
add_importlibs(framedyn oleaut32 msvcrt kernel32 ntdll)
if(NOT MSVC)
# FIXME: http://www.cmake.org/Bug/view.php?id=12998
#add_target_compile_flags(framedyn "-fexceptions -Wno-deprecated-declarations")
set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-fexceptions -Wno-deprecated-declarations")
spec2def(framedyn.dll framedyn_gcc.spec ADD_IMPORTLIB)
list(APPEND SOURCE ${CMAKE_CURRENT_BINARY_DIR}/framedyn.def)
#add_target_compile_flags(framedyn "-Wno-deprecated-declarations")
set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-Wno-error=deprecated-declarations")
endif()
add_cd_file(TARGET framedyn DESTINATION reactos/system32/wbem FOR all)
if(MSVC)
add_asm_files(framedynex_asm alias_msvc.s)
else()
add_asm_files(framedynex_asm alias_gcc.s)
endif()
add_library(framedynex ${framedynex_asm})

View file

@ -0,0 +1,92 @@
#include <asm.inc>
.code64
.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(__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, ?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)
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)
END

View file

@ -0,0 +1,48 @@
#include <asm.inc>
.code64
.align 4
MACRO(DEFINE_ALIAS, alias, orig)
EXTERN &orig:ABS
ALIAS <&alias> = <&orig>
ENDM
DEFINE_ALIAS ?AllocSysString@CHString@@QBEPA_WXZ, ?AllocSysString@CHString@@QBEPAGXZ
DEFINE_ALIAS ?AssignCopy@CHString@@IAEXHPB_W@Z, ?AssignCopy@CHString@@IAEXHPBG@Z
DEFINE_ALIAS ??0CHString@@QAE@PB_W@Z, ??0CHString@@QAE@PBG@Z
DEFINE_ALIAS ??0CHString@@QAE@PB_WH@Z, ??0CHString@@QAE@PBGH@Z
DEFINE_ALIAS ??0CHString@@QAE@_WH@Z, ??0CHString@@QAE@GH@Z
DEFINE_ALIAS ?Collate@CHString@@QBEHPB_W@Z, ?Collate@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Compare@CHString@@QBEHPB_W@Z, ?Compare@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?CompareNoCase@CHString@@QBEHPB_W@Z, ?CompareNoCase@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?ConcatCopy@CHString@@IAEXHPB_WH0@Z, ?ConcatCopy@CHString@@IAEXHPBGH0@Z
DEFINE_ALIAS ?ConcatInPlace@CHString@@IAEXHPB_W@Z, ?ConcatInPlace@CHString@@IAEXHPBG@Z
DEFINE_ALIAS ?Find@CHString@@QBEHPB_W@Z, ?Find@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Find@CHString@@QBEH_W@Z, ?Find@CHString@@QBEHG@Z
DEFINE_ALIAS ?FindOneOf@CHString@@QBEHPB_W@Z, ?FindOneOf@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Format@CHString@@QAAXPB_WZZ, ?Format@CHString@@QAAXPBGZZ
DEFINE_ALIAS ?FormatMessageW@CHString@@QAAXPB_WZZ, ?FormatMessageW@CHString@@QAAXPBGZZ
DEFINE_ALIAS ?FormatV@CHString@@QAEXPB_WPAD@Z, ?FormatV@CHString@@QAEXPBGPAD@Z
DEFINE_ALIAS ?GetAt@CHString@@QBE_WH@Z, ?GetAt@CHString@@QBEGH@Z
DEFINE_ALIAS ?GetBuffer@CHString@@QAEPA_WH@Z, ?GetBuffer@CHString@@QAEPAGH@Z
DEFINE_ALIAS ?GetBufferSetLength@CHString@@QAEPA_WH@Z, ?GetBufferSetLength@CHString@@QAEPAGH@Z
DEFINE_ALIAS ?LoadStringW@CHString@@IAEHIPA_WI@Z, ?LoadStringW@CHString@@IAEHIPAGI@Z
DEFINE_ALIAS ?LockBuffer@CHString@@QAEPA_WXZ, ?LockBuffer@CHString@@QAEPAGXZ
DEFINE_ALIAS ?ReverseFind@CHString@@QBEH_W@Z, ?ReverseFind@CHString@@QBEHG@Z
DEFINE_ALIAS ?SafeStrlen@CHString@@KGHPB_W@Z, ?SafeStrlen@CHString@@KGHPBG@Z
DEFINE_ALIAS ?SetAt@CHString@@QAEXH_W@Z, ?SetAt@CHString@@QAEXHG@Z
DEFINE_ALIAS ?SpanExcluding@CHString@@QBE?AV1@PB_W@Z, ?SpanExcluding@CHString@@QBE?AV1@PBG@Z
DEFINE_ALIAS ?SpanIncluding@CHString@@QBE?AV1@PB_W@Z, ?SpanIncluding@CHString@@QBE?AV1@PBG@Z
DEFINE_ALIAS ??BCHString@@QBEPB_WXZ, ??BCHString@@QBEPBGXZ
DEFINE_ALIAS ??YCHString@@QAEABV0@PB_W@Z, ??YCHString@@QAEABV0@PBG@Z
DEFINE_ALIAS ??YCHString@@QAEABV0@_W@Z, ??YCHString@@QAEABV0@G@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@PB_W@Z, ??4CHString@@QAEABV0@PBG@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@_W@Z, ??4CHString@@QAEABV0@G@Z
DEFINE_ALIAS ??ACHString@@QBE_WH@Z, ??ACHString@@QBEGH@Z
DEFINE_ALIAS ??H@YG?AVCHString@@_WABV0@@Z, ??H@YG?AVCHString@@GABV0@@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@_W@Z, ??H@YG?AVCHString@@ABV0@G@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@PB_W@Z, ??H@YG?AVCHString@@ABV0@PBG@Z
DEFINE_ALIAS ??H@YG?AVCHString@@PB_WABV0@@Z, ??H@YG?AVCHString@@PBGABV0@@Z
END

View file

@ -940,7 +940,7 @@ void CHString::Release()
/*
* @implemented
*/
void CHString::Release(CHStringData* pData)
void WINAPI CHString::Release(CHStringData* pData)
{
// If empty string, ignore
if (pData == &afxNullData)

View file

@ -3,13 +3,13 @@
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long) _ZNK8CHString9AllocCopyERS_iii
@ thiscall ?AllocSysString@CHString@@QBEPAGXZ() _ZNK8CHString14AllocSysStringEv
@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) _ZN8CHString10AssignCopyEiPKw
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr) _ZN8CHStringC2ERKS_
@ thiscall ??0CHString@@QAE@PBD@Z(str) _ZN8CHStringC2EPKc
@ thiscall ??0CHString@@QAE@PBE@Z(str) _ZN8CHStringC2EPKh
@ thiscall ??0CHString@@QAE@PBG@Z(wstr) _ZN8CHStringC2EPKw
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long) _ZN8CHStringC2EPKwi
@ thiscall ??0CHString@@QAE@GH@Z(long long) _ZN8CHStringC2Ewi
@ thiscall ??0CHString@@QAE@XZ() _ZN8CHStringC2Ev
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr) _ZN8CHStringC1ERKS_
@ thiscall ??0CHString@@QAE@PBD@Z(str) _ZN8CHStringC1EPKc
@ thiscall ??0CHString@@QAE@PBE@Z(str) _ZN8CHStringC1EPKh
@ thiscall ??0CHString@@QAE@PBG@Z(wstr) _ZN8CHStringC1EPKw
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long) _ZN8CHStringC1EPKwi
@ thiscall ??0CHString@@QAE@GH@Z(long long) _ZN8CHStringC1Ewi
@ thiscall ??0CHString@@QAE@XZ() _ZN8CHStringC1Ev
@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CollateEPKw
@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString7CompareEPKw
@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) _ZNK8CHString13CompareNoCaseEPKw
@ -43,7 +43,7 @@
@ thiscall ?MakeUpper@CHString@@QAEXXZ() _ZN8CHString9MakeUpperEv
@ thiscall ?Mid@CHString@@QBE?AV1@H@Z(long) _ZNK8CHString3MidEi
@ thiscall ?Mid@CHString@@QBE?AV1@HH@Z(long long) _ZNK8CHString3MidEii
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr) _ZN8CHString7ReleaseEP12CHStringData
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr) _ZN8CHString7ReleaseEP12CHStringData@4
@ thiscall ?Release@CHString@@IAEXXZ() _ZN8CHString7ReleaseEv
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long) _ZN8CHString13ReleaseBufferEi
@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long) _ZNK8CHString11ReverseFindEw
@ -55,7 +55,7 @@
@ thiscall ?TrimLeft@CHString@@QAEXXZ() _ZN8CHString8TrimLeftEv
@ thiscall ?TrimRight@CHString@@QAEXXZ() _ZN8CHString9TrimRightEv
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ() _ZN8CHString12UnlockBufferEv
@ thiscall ??BCHString@@QBEPBGXZ(ptr) _ZN8CHStringcvPwEv
@ thiscall ??BCHString@@QBEPBGXZ(ptr) _ZNK8CHStringcvPKwEv
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr) _ZN8CHStringpLERKS_
@ thiscall ??YCHString@@QAEABV0@D@Z(long) _ZN8CHStringpLEc
@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringpLEPKw
@ -68,7 +68,7 @@
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringaSEPKw
@ thiscall ??4CHString@@QAEABV0@G@Z(long) _ZN8CHStringaSEw
@ thiscall ??ACHString@@QBEGH@Z(long) _ZNK8CHStringixEi
@ thiscall ??1CHString@@QAE@XZ() _ZN8CHStringD2Ev
@ thiscall ??1CHString@@QAE@XZ() _ZN8CHStringD1Ev
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr) _ZplwRK8CHString
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long) _ZplRK8CHStringw
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) _ZplRK8CHStringPKw

View file

@ -1,76 +1,76 @@
@ thiscall ?AllocBeforeWrite@CHString@@IAEXH@Z(long)
@ thiscall ?AllocBuffer@CHString@@IAEXH@Z(long)
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long)
#@ thiscall ?AllocSysString@CHString@@QBEPAGXZ()
#@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ?AllocSysString@CHString@@QBEPAGXZ() ?AllocSysString@CHString@@QBEPA_WXZ
@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr) ?AssignCopy@CHString@@IAEXHPB_W@Z
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr)
@ thiscall ??0CHString@@QAE@PBD@Z(str)
@ thiscall ??0CHString@@QAE@PBE@Z(str)
#@ thiscall ??0CHString@@QAE@PBG@Z(wstr)
#@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long)
#@ thiscall ??0CHString@@QAE@GH@Z(long long)
@ thiscall ??0CHString@@QAE@PBG@Z(wstr) ??0CHString@@QAE@PB_W@Z
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long) ??0CHString@@QAE@PB_WH@Z
@ thiscall ??0CHString@@QAE@GH@Z(long long) ??0CHString@@QAE@_WH@Z
@ thiscall ??0CHString@@QAE@XZ()
#@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr)
#@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr)
#@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr)
#@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr)
#@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr) ?Collate@CHString@@QBEHPB_W@Z
@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr) ?Compare@CHString@@QBEHPB_W@Z
@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr) ?CompareNoCase@CHString@@QBEHPB_W@Z
@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr) ?ConcatCopy@CHString@@IAEXHPB_WH0@Z
@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr) ?ConcatInPlace@CHString@@IAEXHPB_W@Z
@ thiscall ?CopyBeforeWrite@CHString@@IAEXXZ()
@ thiscall ?Empty@CHString@@QAEXXZ()
#@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr)
#@ thiscall ?Find@CHString@@QBEHG@Z(long)
#@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr) ?Find@CHString@@QBEHPB_W@Z
@ thiscall ?Find@CHString@@QBEHG@Z(long) ?Find@CHString@@QBEH_W@Z
@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr) ?FindOneOf@CHString@@QBEHPB_W@Z
@ thiscall ?Format@CHString@@QAAXIZZ(long long long)
#@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long)
@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long) ?Format@CHString@@QAAXPB_WZZ
@ thiscall ?FormatMessageW@CHString@@QAAXIZZ(long long long)
#@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long)
#@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long)
@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long) ?FormatMessageW@CHString@@QAAXPB_WZZ
@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long) ?FormatV@CHString@@QAEXPB_WPAD@Z
@ thiscall ?FreeExtra@CHString@@QAEXXZ()
@ thiscall ?GetAllocLength@CHString@@QBEHXZ()
#@ thiscall ?GetAt@CHString@@QBEGH@Z(long)
#@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long)
#@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetAt@CHString@@QBEGH@Z(long) ?GetAt@CHString@@QBE_WH@Z
@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long) ?GetBuffer@CHString@@QAEPA_WH@Z
@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long) ?GetBufferSetLength@CHString@@QAEPA_WH@Z
@ thiscall ?GetData@CHString@@IBEPAUCHStringData@@XZ()
@ thiscall ?GetLength@CHString@@QBEHXZ()
@ thiscall ?Init@CHString@@IAEXXZ()
@ thiscall ?IsEmpty@CHString@@QBEHXZ()
@ thiscall ?Left@CHString@@QBE?AV1@H@Z(long)
#@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long)
#@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long)
#@ thiscall ?LockBuffer@CHString@@QAEPAGXZ()
@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long)
@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long) ?LoadStringW@CHString@@IAEHIPA_WI@Z
@ thiscall ?LockBuffer@CHString@@QAEPAGXZ() ?LockBuffer@CHString@@QAEPA_WXZ
@ thiscall ?MakeLower@CHString@@QAEXXZ()
@ thiscall ?MakeReverse@CHString@@QAEXXZ()
@ thiscall ?MakeUpper@CHString@@QAEXXZ()
@ thiscall ?Mid@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?Mid@CHString@@QBE?AV1@HH@Z(long long)
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr)
#@ thiscall ?Release@CHString@@IAEXXZ()
#@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long)
#@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long)
@ thiscall ?Release@CHString@@IAEXXZ()
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long)
@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long) ?ReverseFind@CHString@@QBEH_W@Z
@ thiscall ?Right@CHString@@QBE?AV1@H@Z(long)
#@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr)
#@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long)
#@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr)
#@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr) ?SafeStrlen@CHString@@KGHPB_W@Z
@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long) ?SetAt@CHString@@QAEXH_W@Z
@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr) ?SpanExcluding@CHString@@QBE?AV1@PB_W@Z
@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr) ?SpanIncluding@CHString@@QBE?AV1@PB_W@Z
@ thiscall ?TrimLeft@CHString@@QAEXXZ()
@ thiscall ?TrimRight@CHString@@QAEXXZ()
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ()
#@ thiscall ??BCHString@@QBEPBGXZ(ptr)
@ thiscall ??BCHString@@QBEPBGXZ(ptr) ??BCHString@@QBEPB_WXZ
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??YCHString@@QAEABV0@D@Z(long)
#@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr)
#@ thiscall ??YCHString@@QAEABV0@G@Z(long)
@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr) ??YCHString@@QAEABV0@PB_W@Z
@ thiscall ??YCHString@@QAEABV0@G@Z(long) ??YCHString@@QAEABV0@_W@Z
@ thiscall ??4CHString@@QAEABV0@PAV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@PBD@Z(str)
@ thiscall ??4CHString@@QAEABV0@D@Z(long)
@ thiscall ??4CHString@@QAEABV0@PBE@Z(str)
#@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr)
#@ thiscall ??4CHString@@QAEABV0@G@Z(long)
@ thiscall ??ACHString@@QBEGH@Z(long)
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr) ??4CHString@@QAEABV0@PB_W@Z
@ thiscall ??4CHString@@QAEABV0@G@Z(long) ??4CHString@@QAEABV0@_W@Z
@ thiscall ??ACHString@@QBEGH@Z(long) ??ACHString@@QBE_WH@Z
@ thiscall ??1CHString@@QAE@XZ()
#@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr)
#@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long)
#@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr)
#@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr)
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr) ??H@YG?AVCHString@@_WABV0@@Z
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long) ??H@YG?AVCHString@@ABV0@_W@Z
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) ??H@YG?AVCHString@@ABV0@PB_W@Z
@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr) ??H@YG?AVCHString@@PB_WABV0@@Z
@ stdcall ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr)

View file

@ -14,7 +14,7 @@ struct CHStringData
WCHAR* data()
{
return (WCHAR*)(this+1);
return (WCHAR*)(this+1);
}
};
@ -51,14 +51,13 @@ public:
int GetLength() const;
BOOL IsEmpty() const;
CHString Left(int nCount) const throw (CHeap_Exception);
int LoadStringW(UINT nID) throw (CHeap_Exception);
LPWSTR LockBuffer();
void MakeLower() throw (CHeap_Exception);
void MakeReverse() throw (CHeap_Exception);
void MakeUpper() throw (CHeap_Exception);
CHString Mid(int nFirst) const throw (CHeap_Exception);
CHString Mid(int nFirst, int nCount) const throw (CHeap_Exception);
void Release();
void Release(CHStringData* pData);
void ReleaseBuffer(int nNewLength = -1) throw (CHeap_Exception);
int ReverseFind(WCHAR ch) const;
CHString Right(int nCount) const throw (CHeap_Exception);
@ -104,8 +103,9 @@ protected:
void CopyBeforeWrite() throw (CHeap_Exception);
CHStringData* GetData() const;
void Init();
int LoadStringW(UINT nID) throw (CHeap_Exception);
int LoadStringW(UINT nID, LPWSTR lpszBuf, UINT nMaxBuf) throw (CHeap_Exception);
void Release();
static void WINAPI Release(CHStringData* pData);
static int WINAPI SafeStrlen(LPCWSTR lpsz);
};