; 
; Exports of file MfcSubs.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MfcSubs.dll
EXPORTS
; VCString::?$ConstructElements(@@YGXPAVCString@@H@Z)
??$ConstructElements@VCString@@@@YGXPAVCString@@H@Z
; VCString::?$CopyElements(@@YGXPAVCString@@PBV0@H@Z)
??$CopyElements@VCString@@@@YGXPAVCString@@PBV0@H@Z
; VCString::?$DestructElements(@@YGXPAVCString@@H@Z)
??$DestructElements@VCString@@@@YGXPAVCString@@H@Z
; ABU_GUID::?$HashKey(@@YGIABU_GUID@@@Z)
??$HashKey@ABU_GUID@@@@YGIABU_GUID@@@Z
; PBD::?$HashKey(YGIPBD@Z)
??$HashKey@PBD@@YGIPBD@Z
; PBG::?$HashKey(YGIPBG@Z)
??$HashKey@PBG@@YGIPBG@Z
; public: __thiscall CCriticalSection::CCriticalSection(void)
??0CCriticalSection@@QAE@XZ
; public: __thiscall CMapStringToPtr::CMapStringToPtr(int)
??0CMapStringToPtr@@QAE@H@Z
; protected: __thiscall CObject::CObject(void)
??0CObject@@IAE@XZ
; public: __thiscall CString::CString(class CString const &)
??0CString@@QAE@ABV0@@Z
; public: __thiscall CString::CString(unsigned short,int)
??0CString@@QAE@GH@Z
; public: __thiscall CString::CString(char const *)
??0CString@@QAE@PBD@Z
; public: __thiscall CString::CString(unsigned char const *)
??0CString@@QAE@PBE@Z
; public: __thiscall CString::CString(unsigned short const *)
??0CString@@QAE@PBG@Z
; public: __thiscall CString::CString(unsigned short const *,int)
??0CString@@QAE@PBGH@Z
; public: __thiscall CString::CString(void)
??0CString@@QAE@XZ
; public: __thiscall CStringArray::CStringArray(void)
??0CStringArray@@QAE@XZ
; public: __thiscall CSyncObject::CSyncObject(unsigned short const *)
??0CSyncObject@@QAE@PBG@Z
; public: virtual __thiscall CCriticalSection::~CCriticalSection(void)
??1CCriticalSection@@UAE@XZ
; public: virtual __thiscall CMapStringToPtr::~CMapStringToPtr(void)
??1CMapStringToPtr@@UAE@XZ
; public: virtual __thiscall CObject::~CObject(void)
??1CObject@@UAE@XZ
; public: __thiscall CString::~CString(void)
??1CString@@QAE@XZ
; public: virtual __thiscall CStringArray::~CStringArray(void)
??1CStringArray@@UAE@XZ
; public: virtual __thiscall CSyncObject::~CSyncObject(void)
??1CSyncObject@@UAE@XZ
; public: struct CPlex & __thiscall CPlex::operator=(struct CPlex const &)
??4CPlex@@QAEAAU0@ABU0@@Z
; public: class CString const & __thiscall CString::operator=(class CString const &)
??4CString@@QAEABV0@ABV0@@Z
; public: class CString const & __thiscall CString::operator=(char)
??4CString@@QAEABV0@D@Z
; public: class CString const & __thiscall CString::operator=(unsigned short)
??4CString@@QAEABV0@G@Z
; public: class CString const & __thiscall CString::operator=(char const *)
??4CString@@QAEABV0@PBD@Z
; public: class CString const & __thiscall CString::operator=(unsigned char const *)
??4CString@@QAEABV0@PBE@Z
; public: class CString const & __thiscall CString::operator=(unsigned short const *)
??4CString@@QAEABV0@PBG@Z
; bool __stdcall operator==(class CString const &,class CString const &)
??8@YG_NABVCString@@0@Z
; bool __stdcall operator==(class CString const &,unsigned short const *)
??8@YG_NABVCString@@PBG@Z
; bool __stdcall operator==(unsigned short const *,class CString const &)
??8@YG_NPBGABVCString@@@Z
; bool __stdcall operator!=(class CString const &,class CString const &)
??9@YG_NABVCString@@0@Z
; bool __stdcall operator!=(class CString const &,unsigned short const *)
??9@YG_NABVCString@@PBG@Z
; bool __stdcall operator!=(unsigned short const *,class CString const &)
??9@YG_NPBGABVCString@@@Z
; public: void * & __thiscall CMapStringToPtr::operator[](unsigned short const *)
??ACMapStringToPtr@@QAEAAPAXPBG@Z
; public: unsigned short __thiscall CString::operator[](int)const 
??ACString@@QBEGH@Z
; public: class CString & __thiscall CStringArray::operator[](int)
??ACStringArray@@QAEAAVCString@@H@Z
; public: class CString  __thiscall CStringArray::operator[](int)const 
??ACStringArray@@QBE?AVCString@@H@Z
; public: __thiscall CCriticalSection::operator struct _RTL_CRITICAL_SECTION *(void)
??BCCriticalSection@@QAEPAU_RTL_CRITICAL_SECTION@@XZ
; public: __thiscall CString::operator unsigned short const *(void)const 
??BCString@@QBEPBGXZ
; public: __thiscall CSyncObject::operator void *(void)const 
??BCSyncObject@@QBEPAXXZ
; class CString  __stdcall operator+(class CString const &,class CString const &)
??H@YG?AVCString@@ABV0@0@Z
; class CString  __stdcall operator+(class CString const &,char)
??H@YG?AVCString@@ABV0@D@Z
; class CString  __stdcall operator+(class CString const &,unsigned short)
??H@YG?AVCString@@ABV0@G@Z
; class CString  __stdcall operator+(class CString const &,unsigned short const *)
??H@YG?AVCString@@ABV0@PBG@Z
; class CString  __stdcall operator+(char,class CString const &)
??H@YG?AVCString@@DABV0@@Z
; class CString  __stdcall operator+(unsigned short,class CString const &)
??H@YG?AVCString@@GABV0@@Z
; class CString  __stdcall operator+(unsigned short const *,class CString const &)
??H@YG?AVCString@@PBGABV0@@Z
; bool __stdcall operator<(class CString const &,class CString const &)
??M@YG_NABVCString@@0@Z
; bool __stdcall operator<(class CString const &,unsigned short const *)
??M@YG_NABVCString@@PBG@Z
; bool __stdcall operator<(unsigned short const *,class CString const &)
??M@YG_NPBGABVCString@@@Z
; bool __stdcall operator<=(class CString const &,class CString const &)
??N@YG_NABVCString@@0@Z
; bool __stdcall operator<=(class CString const &,unsigned short const *)
??N@YG_NABVCString@@PBG@Z
; bool __stdcall operator<=(unsigned short const *,class CString const &)
??N@YG_NPBGABVCString@@@Z
; bool __stdcall operator>(class CString const &,class CString const &)
??O@YG_NABVCString@@0@Z
; bool __stdcall operator>(class CString const &,unsigned short const *)
??O@YG_NABVCString@@PBG@Z
; bool __stdcall operator>(unsigned short const *,class CString const &)
??O@YG_NPBGABVCString@@@Z
; bool __stdcall operator>=(class CString const &,class CString const &)
??P@YG_NABVCString@@0@Z
; bool __stdcall operator>=(class CString const &,unsigned short const *)
??P@YG_NABVCString@@PBG@Z
; bool __stdcall operator>=(unsigned short const *,class CString const &)
??P@YG_NPBGABVCString@@@Z
; public: class CString const & __thiscall CString::operator+=(class CString const &)
??YCString@@QAEABV0@ABV0@@Z
; public: class CString const & __thiscall CString::operator+=(char)
??YCString@@QAEABV0@D@Z
; public: class CString const & __thiscall CString::operator+=(unsigned short)
??YCString@@QAEABV0@G@Z
; public: class CString const & __thiscall CString::operator+=(unsigned short const *)
??YCString@@QAEABV0@PBG@Z
; const  CCriticalSection::`vftable'
??_7CCriticalSection@@6B@
; const  CMapStringToPtr::`vftable'
??_7CMapStringToPtr@@6B@
; const  CObject::`vftable'
??_7CObject@@6B@
; const  CStringArray::`vftable'
??_7CStringArray@@6B@
; const  CSyncObject::`vftable'
??_7CSyncObject@@6B@
; public: void __thiscall CMapStringToPtr::`default constructor closure'(void)
??_FCMapStringToPtr@@QAEXXZ
; public: int __thiscall CStringArray::Add(unsigned short const *)
?Add@CStringArray@@QAEHPBG@Z
; unsigned short * __stdcall AfxA2WHelper(unsigned short *,char const *,int)
?AfxA2WHelper@@YGPAGPAGPBDH@Z
; int __stdcall AfxExtractSubString(class CString &,unsigned short const *,int,unsigned short)
?AfxExtractSubString@@YGHAAVCString@@PBGHG@Z
; class CString const & __stdcall AfxGetEmptyString(void)
?AfxGetEmptyString@@YGABVCString@@XZ
; int __stdcall AfxLoadString(unsigned int,unsigned short *,unsigned int)
?AfxLoadString@@YGHIPAGI@Z
; char * __stdcall AfxW2AHelper(char *,unsigned short const *,int)
?AfxW2AHelper@@YGPADPADPBGH@Z
; protected: void __thiscall CString::AllocBeforeWrite(int)
?AllocBeforeWrite@CString@@IAEXH@Z
; protected: void __thiscall CString::AllocBuffer(int)
?AllocBuffer@CString@@IAEXH@Z
; protected: void __thiscall CString::AllocCopy(class CString &,int,int,int)const 
?AllocCopy@CString@@IBEXAAV1@HHH@Z
; public: int __thiscall CStringArray::Append(class CStringArray const &)
?Append@CStringArray@@QAEHABV1@@Z
; protected: void __thiscall CString::AssignCopy(int,unsigned short const *)
?AssignCopy@CString@@IAEXHPBG@Z
; public: int __thiscall CString::Collate(unsigned short const *)const 
?Collate@CString@@QBEHPBG@Z
; public: int __thiscall CString::Compare(unsigned short const *)const 
?Compare@CString@@QBEHPBG@Z
; public: int __thiscall CString::CompareNoCase(unsigned short const *)const 
?CompareNoCase@CString@@QBEHPBG@Z
; protected: void __thiscall CString::ConcatCopy(int,unsigned short const *,int,unsigned short const *)
?ConcatCopy@CString@@IAEXHPBGH0@Z
; protected: void __thiscall CString::ConcatInPlace(int,unsigned short const *)
?ConcatInPlace@CString@@IAEXHPBG@Z
; public: void __thiscall CStringArray::Copy(class CStringArray const &)
?Copy@CStringArray@@QAEXABV1@@Z
; protected: void __thiscall CString::CopyBeforeWrite(void)
?CopyBeforeWrite@CString@@IAEXXZ
; public: static struct CPlex * __stdcall CPlex::Create(struct CPlex * &,unsigned int,unsigned int)
?Create@CPlex@@SGPAU1@AAPAU1@II@Z
; public: class CString & __thiscall CStringArray::ElementAt(int)
?ElementAt@CStringArray@@QAEAAVCString@@H@Z
; public: void __thiscall CString::Empty(void)
?Empty@CString@@QAEXXZ
; public: int __thiscall CString::Find(unsigned short)const 
?Find@CString@@QBEHG@Z
; public: int __thiscall CString::Find(unsigned short const *)const 
?Find@CString@@QBEHPBG@Z
; public: int __thiscall CString::FindOneOf(unsigned short const *)const 
?FindOneOf@CString@@QBEHPBG@Z
; public: void __cdecl CString::Format(unsigned int,...)
?Format@CString@@QAAXIZZ
; public: void __cdecl CString::Format(unsigned short const *,...)
?Format@CString@@QAAXPBGZZ
; public: void __cdecl CString::FormatMessageW(unsigned int,...)
?FormatMessageW@CString@@QAAXIZZ
; public: void __cdecl CString::FormatMessageW(unsigned short const *,...)
?FormatMessageW@CString@@QAAXPBGZZ
; protected: void __thiscall CString::FormatV(unsigned short const *,char *)
?FormatV@CString@@IAEXPBGPAD@Z
; protected: void __thiscall CMapStringToPtr::FreeAssoc(struct CMapStringToPtr::CAssoc *)
?FreeAssoc@CMapStringToPtr@@IAEXPAUCAssoc@1@@Z
; public: void __thiscall CPlex::FreeDataChain(void)
?FreeDataChain@CPlex@@QAEXXZ
; public: void __thiscall CString::FreeExtra(void)
?FreeExtra@CString@@QAEXXZ
; public: void __thiscall CStringArray::FreeExtra(void)
?FreeExtra@CStringArray@@QAEXXZ
; public: int __thiscall CString::GetAllocLength(void)const 
?GetAllocLength@CString@@QBEHXZ
; protected: struct CMapStringToPtr::CAssoc * __thiscall CMapStringToPtr::GetAssocAt(unsigned short const *,unsigned int &)const 
?GetAssocAt@CMapStringToPtr@@IBEPAUCAssoc@1@PBGAAI@Z
; public: unsigned short __thiscall CString::GetAt(int)const 
?GetAt@CString@@QBEGH@Z
; public: class CString  __thiscall CStringArray::GetAt(int)const 
?GetAt@CStringArray@@QBE?AVCString@@H@Z
; public: unsigned short * __thiscall CString::GetBuffer(int)
?GetBuffer@CString@@QAEPAGH@Z
; public: unsigned short * __thiscall CString::GetBufferSetLength(int)
?GetBufferSetLength@CString@@QAEPAGH@Z
; public: int __thiscall CMapStringToPtr::GetCount(void)const 
?GetCount@CMapStringToPtr@@QBEHXZ
; protected: struct CStringData * __thiscall CString::GetData(void)const 
?GetData@CString@@IBEPAUCStringData@@XZ
; public: class CString * __thiscall CStringArray::GetData(void)
?GetData@CStringArray@@QAEPAVCString@@XZ
; public: class CString const * __thiscall CStringArray::GetData(void)const 
?GetData@CStringArray@@QBEPBVCString@@XZ
; public: unsigned int __thiscall CMapStringToPtr::GetHashTableSize(void)const 
?GetHashTableSize@CMapStringToPtr@@QBEIXZ
; public: int __thiscall CString::GetLength(void)const 
?GetLength@CString@@QBEHXZ
; public: void __thiscall CMapStringToPtr::GetNextAssoc(struct __POSITION * &,class CString &,void * &)const 
?GetNextAssoc@CMapStringToPtr@@QBEXAAPAU__POSITION@@AAVCString@@AAPAX@Z
; public: int __thiscall CStringArray::GetSize(void)const 
?GetSize@CStringArray@@QBEHXZ
; public: struct __POSITION * __thiscall CMapStringToPtr::GetStartPosition(void)const 
?GetStartPosition@CMapStringToPtr@@QBEPAU__POSITION@@XZ
; public: int __thiscall CStringArray::GetUpperBound(void)const 
?GetUpperBound@CStringArray@@QBEHXZ
; public: unsigned int __thiscall CMapStringToPtr::HashKey(unsigned short const *)const 
?HashKey@CMapStringToPtr@@QBEIPBG@Z
; protected: void __thiscall CString::Init(void)
?Init@CString@@IAEXXZ
; public: void __thiscall CMapStringToPtr::InitHashTable(unsigned int,int)
?InitHashTable@CMapStringToPtr@@QAEXIH@Z
; public: void __thiscall CStringArray::InsertAt(int,class CStringArray *)
?InsertAt@CStringArray@@QAEXHPAV1@@Z
; public: void __thiscall CStringArray::InsertAt(int,unsigned short const *,int)
?InsertAt@CStringArray@@QAEXHPBGH@Z
; public: int __thiscall CMapStringToPtr::IsEmpty(void)const 
?IsEmpty@CMapStringToPtr@@QBEHXZ
; public: int __thiscall CString::IsEmpty(void)const 
?IsEmpty@CString@@QBEHXZ
; public: class CString  __thiscall CString::Left(int)const 
?Left@CString@@QBE?AV1@H@Z
; public: int __thiscall CString::LoadStringW(unsigned int)
?LoadStringW@CString@@QAEHI@Z
; public: int __thiscall CCriticalSection::Lock(void)
?Lock@CCriticalSection@@QAEHXZ
; public: virtual int __thiscall CCriticalSection::Lock(unsigned long)
?Lock@CCriticalSection@@UAEHK@Z
; public: virtual int __thiscall CSyncObject::Lock(unsigned long)
?Lock@CSyncObject@@UAEHK@Z
; public: unsigned short * __thiscall CString::LockBuffer(void)
?LockBuffer@CString@@QAEPAGXZ
; public: int __thiscall CMapStringToPtr::Lookup(unsigned short const *,void * &)const 
?Lookup@CMapStringToPtr@@QBEHPBGAAPAX@Z
; public: int __thiscall CMapStringToPtr::LookupKey(unsigned short const *,unsigned short const * &)const 
?LookupKey@CMapStringToPtr@@QBEHPBGAAPBG@Z
; public: void __thiscall CString::MakeLower(void)
?MakeLower@CString@@QAEXXZ
; public: void __thiscall CString::MakeReverse(void)
?MakeReverse@CString@@QAEXXZ
; public: void __thiscall CString::MakeUpper(void)
?MakeUpper@CString@@QAEXXZ
; public: class CString  __thiscall CString::Mid(int)const 
?Mid@CString@@QBE?AV1@H@Z
; public: class CString  __thiscall CString::Mid(int,int)const 
?Mid@CString@@QBE?AV1@HH@Z
; protected: struct CMapStringToPtr::CAssoc * __thiscall CMapStringToPtr::NewAssoc(void)
?NewAssoc@CMapStringToPtr@@IAEPAUCAssoc@1@XZ
; protected: void __thiscall CString::Release(void)
?Release@CString@@IAEXXZ
; protected: static void __stdcall CString::Release(struct CStringData *)
?Release@CString@@KGXPAUCStringData@@@Z
; public: void __thiscall CString::ReleaseBuffer(int)
?ReleaseBuffer@CString@@QAEXH@Z
; public: void __thiscall CMapStringToPtr::RemoveAll(void)
?RemoveAll@CMapStringToPtr@@QAEXXZ
; public: void __thiscall CStringArray::RemoveAll(void)
?RemoveAll@CStringArray@@QAEXXZ
; public: void __thiscall CStringArray::RemoveAt(int,int)
?RemoveAt@CStringArray@@QAEXHH@Z
; public: int __thiscall CMapStringToPtr::RemoveKey(unsigned short const *)
?RemoveKey@CMapStringToPtr@@QAEHPBG@Z
; public: int __thiscall CString::ReverseFind(unsigned short)const 
?ReverseFind@CString@@QBEHG@Z
; public: class CString  __thiscall CString::Right(int)const 
?Right@CString@@QBE?AV1@H@Z
; protected: static int __stdcall CString::SafeStrlen(unsigned short const *)
?SafeStrlen@CString@@KGHPBG@Z
; public: void __thiscall CMapStringToPtr::SetAt(unsigned short const *,void *)
?SetAt@CMapStringToPtr@@QAEXPBGPAX@Z
; public: void __thiscall CString::SetAt(int,unsigned short)
?SetAt@CString@@QAEXHG@Z
; public: void __thiscall CStringArray::SetAt(int,unsigned short const *)
?SetAt@CStringArray@@QAEXHPBG@Z
; public: void __thiscall CStringArray::SetAtGrow(int,unsigned short const *)
?SetAtGrow@CStringArray@@QAEXHPBG@Z
; public: void __thiscall CStringArray::SetSize(int,int)
?SetSize@CStringArray@@QAEXHH@Z
; public: class CString  __thiscall CString::SpanExcluding(unsigned short const *)const 
?SpanExcluding@CString@@QBE?AV1@PBG@Z
; public: class CString  __thiscall CString::SpanIncluding(unsigned short const *)const 
?SpanIncluding@CString@@QBE?AV1@PBG@Z
; public: void __thiscall CString::TrimLeft(void)
?TrimLeft@CString@@QAEXXZ
; public: void __thiscall CString::TrimRight(void)
?TrimRight@CString@@QAEXXZ
; public: virtual int __thiscall CCriticalSection::Unlock(void)
?Unlock@CCriticalSection@@UAEHXZ
; public: virtual int __thiscall CSyncObject::Unlock(long,long *)
?Unlock@CSyncObject@@UAEHJPAJ@Z
; public: void __thiscall CString::UnlockBuffer(void)
?UnlockBuffer@CString@@QAEXXZ
; public: void * __thiscall CPlex::data(void)
?data@CPlex@@QAEPAXXZ
