; 
; Exports of file MfcSubs.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MfcSubs.dll
EXPORTS
; VCString::?$ConstructElements(@@YAXPEAVCString@@H@Z)
??$ConstructElements@VCString@@@@YAXPEAVCString@@H@Z
; VCString::?$CopyElements(@@YAXPEAVCString@@PEBV0@H@Z)
??$CopyElements@VCString@@@@YAXPEAVCString@@PEBV0@H@Z
; VCString::?$DestructElements(@@YAXPEAVCString@@H@Z)
??$DestructElements@VCString@@@@YAXPEAVCString@@H@Z
; AEBU_GUID::?$HashKey(@@YAIAEBU_GUID@@@Z)
??$HashKey@AEBU_GUID@@@@YAIAEBU_GUID@@@Z
; PEBD::?$HashKey(YAIPEBD@Z)
??$HashKey@PEBD@@YAIPEBD@Z
; PEBG::?$HashKey(YAIPEBG@Z)
??$HashKey@PEBG@@YAIPEBG@Z
; public: __cdecl CCriticalSection::CCriticalSection(void) __ptr64
??0CCriticalSection@@QEAA@XZ
; public: __cdecl CMapStringToPtr::CMapStringToPtr(int) __ptr64
??0CMapStringToPtr@@QEAA@H@Z
; protected: __cdecl CObject::CObject(void) __ptr64
??0CObject@@IEAA@XZ
; public: __cdecl CString::CString(class CString const & __ptr64) __ptr64
??0CString@@QEAA@AEBV0@@Z
; public: __cdecl CString::CString(unsigned short,int) __ptr64
??0CString@@QEAA@GH@Z
; public: __cdecl CString::CString(char const * __ptr64) __ptr64
??0CString@@QEAA@PEBD@Z
; public: __cdecl CString::CString(unsigned char const * __ptr64) __ptr64
??0CString@@QEAA@PEBE@Z
; public: __cdecl CString::CString(unsigned short const * __ptr64) __ptr64
??0CString@@QEAA@PEBG@Z
; public: __cdecl CString::CString(unsigned short const * __ptr64,int) __ptr64
??0CString@@QEAA@PEBGH@Z
; public: __cdecl CString::CString(void) __ptr64
??0CString@@QEAA@XZ
; public: __cdecl CStringArray::CStringArray(void) __ptr64
??0CStringArray@@QEAA@XZ
; public: __cdecl CSyncObject::CSyncObject(unsigned short const * __ptr64) __ptr64
??0CSyncObject@@QEAA@PEBG@Z
; public: virtual __cdecl CCriticalSection::~CCriticalSection(void) __ptr64
??1CCriticalSection@@UEAA@XZ
; public: virtual __cdecl CMapStringToPtr::~CMapStringToPtr(void) __ptr64
??1CMapStringToPtr@@UEAA@XZ
; public: virtual __cdecl CObject::~CObject(void) __ptr64
??1CObject@@UEAA@XZ
; public: __cdecl CString::~CString(void) __ptr64
??1CString@@QEAA@XZ
; public: virtual __cdecl CStringArray::~CStringArray(void) __ptr64
??1CStringArray@@UEAA@XZ
; public: virtual __cdecl CSyncObject::~CSyncObject(void) __ptr64
??1CSyncObject@@UEAA@XZ
; public: struct CPlex & __ptr64 __cdecl CPlex::operator=(struct CPlex const & __ptr64) __ptr64
??4CPlex@@QEAAAEAU0@AEBU0@@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(class CString const & __ptr64) __ptr64
??4CString@@QEAAAEBV0@AEBV0@@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(char) __ptr64
??4CString@@QEAAAEBV0@D@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(unsigned short) __ptr64
??4CString@@QEAAAEBV0@G@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(char const * __ptr64) __ptr64
??4CString@@QEAAAEBV0@PEBD@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(unsigned char const * __ptr64) __ptr64
??4CString@@QEAAAEBV0@PEBE@Z
; public: class CString const & __ptr64 __cdecl CString::operator=(unsigned short const * __ptr64) __ptr64
??4CString@@QEAAAEBV0@PEBG@Z
; bool __cdecl operator==(class CString const & __ptr64,class CString const & __ptr64)
??8@YA_NAEBVCString@@0@Z
; bool __cdecl operator==(class CString const & __ptr64,unsigned short const * __ptr64)
??8@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator==(unsigned short const * __ptr64,class CString const & __ptr64)
??8@YA_NPEBGAEBVCString@@@Z
; bool __cdecl operator!=(class CString const & __ptr64,class CString const & __ptr64)
??9@YA_NAEBVCString@@0@Z
; bool __cdecl operator!=(class CString const & __ptr64,unsigned short const * __ptr64)
??9@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator!=(unsigned short const * __ptr64,class CString const & __ptr64)
??9@YA_NPEBGAEBVCString@@@Z
; public: void * __ptr64 & __ptr64 __cdecl CMapStringToPtr::operator[](unsigned short const * __ptr64) __ptr64
??ACMapStringToPtr@@QEAAAEAPEAXPEBG@Z
; public: unsigned short __cdecl CString::operator[](int)const  __ptr64
??ACString@@QEBAGH@Z
; public: class CString & __ptr64 __cdecl CStringArray::operator[](int) __ptr64
??ACStringArray@@QEAAAEAVCString@@H@Z
; public: class CString  __cdecl CStringArray::operator[](int)const  __ptr64
??ACStringArray@@QEBA?AVCString@@H@Z
; public: __cdecl CCriticalSection::operator struct _RTL_CRITICAL_SECTION * __ptr64(void) __ptr64
??BCCriticalSection@@QEAAPEAU_RTL_CRITICAL_SECTION@@XZ
; public: __cdecl CString::operator unsigned short const * __ptr64(void)const  __ptr64
??BCString@@QEBAPEBGXZ
; public: __cdecl CSyncObject::operator void * __ptr64(void)const  __ptr64
??BCSyncObject@@QEBAPEAXXZ
; class CString  __cdecl operator+(class CString const & __ptr64,class CString const & __ptr64)
??H@YA?AVCString@@AEBV0@0@Z
; class CString  __cdecl operator+(class CString const & __ptr64,char)
??H@YA?AVCString@@AEBV0@D@Z
; class CString  __cdecl operator+(class CString const & __ptr64,unsigned short)
??H@YA?AVCString@@AEBV0@G@Z
; class CString  __cdecl operator+(class CString const & __ptr64,unsigned short const * __ptr64)
??H@YA?AVCString@@AEBV0@PEBG@Z
; class CString  __cdecl operator+(char,class CString const & __ptr64)
??H@YA?AVCString@@DAEBV0@@Z
; class CString  __cdecl operator+(unsigned short,class CString const & __ptr64)
??H@YA?AVCString@@GAEBV0@@Z
; class CString  __cdecl operator+(unsigned short const * __ptr64,class CString const & __ptr64)
??H@YA?AVCString@@PEBGAEBV0@@Z
; bool __cdecl operator<(class CString const & __ptr64,class CString const & __ptr64)
??M@YA_NAEBVCString@@0@Z
; bool __cdecl operator<(class CString const & __ptr64,unsigned short const * __ptr64)
??M@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator<(unsigned short const * __ptr64,class CString const & __ptr64)
??M@YA_NPEBGAEBVCString@@@Z
; bool __cdecl operator<=(class CString const & __ptr64,class CString const & __ptr64)
??N@YA_NAEBVCString@@0@Z
; bool __cdecl operator<=(class CString const & __ptr64,unsigned short const * __ptr64)
??N@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator<=(unsigned short const * __ptr64,class CString const & __ptr64)
??N@YA_NPEBGAEBVCString@@@Z
; bool __cdecl operator>(class CString const & __ptr64,class CString const & __ptr64)
??O@YA_NAEBVCString@@0@Z
; bool __cdecl operator>(class CString const & __ptr64,unsigned short const * __ptr64)
??O@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator>(unsigned short const * __ptr64,class CString const & __ptr64)
??O@YA_NPEBGAEBVCString@@@Z
; bool __cdecl operator>=(class CString const & __ptr64,class CString const & __ptr64)
??P@YA_NAEBVCString@@0@Z
; bool __cdecl operator>=(class CString const & __ptr64,unsigned short const * __ptr64)
??P@YA_NAEBVCString@@PEBG@Z
; bool __cdecl operator>=(unsigned short const * __ptr64,class CString const & __ptr64)
??P@YA_NPEBGAEBVCString@@@Z
; public: class CString const & __ptr64 __cdecl CString::operator+=(class CString const & __ptr64) __ptr64
??YCString@@QEAAAEBV0@AEBV0@@Z
; public: class CString const & __ptr64 __cdecl CString::operator+=(char) __ptr64
??YCString@@QEAAAEBV0@D@Z
; public: class CString const & __ptr64 __cdecl CString::operator+=(unsigned short) __ptr64
??YCString@@QEAAAEBV0@G@Z
; public: class CString const & __ptr64 __cdecl CString::operator+=(unsigned short const * __ptr64) __ptr64
??YCString@@QEAAAEBV0@PEBG@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 __cdecl CMapStringToPtr::`default constructor closure'(void) __ptr64
??_FCMapStringToPtr@@QEAAXXZ
; public: int __cdecl CStringArray::Add(unsigned short const * __ptr64) __ptr64
?Add@CStringArray@@QEAAHPEBG@Z
; unsigned short * __ptr64 __cdecl AfxA2WHelper(unsigned short * __ptr64,char const * __ptr64,int)
?AfxA2WHelper@@YAPEAGPEAGPEBDH@Z
; int __cdecl AfxExtractSubString(class CString & __ptr64,unsigned short const * __ptr64,int,unsigned short)
?AfxExtractSubString@@YAHAEAVCString@@PEBGHG@Z
; class CString const & __ptr64 __cdecl AfxGetEmptyString(void)
?AfxGetEmptyString@@YAAEBVCString@@XZ
; int __cdecl AfxLoadString(unsigned int,unsigned short * __ptr64,unsigned int)
?AfxLoadString@@YAHIPEAGI@Z
; char * __ptr64 __cdecl AfxW2AHelper(char * __ptr64,unsigned short const * __ptr64,int)
?AfxW2AHelper@@YAPEADPEADPEBGH@Z
; protected: void __cdecl CString::AllocBeforeWrite(int) __ptr64
?AllocBeforeWrite@CString@@IEAAXH@Z
; protected: void __cdecl CString::AllocBuffer(int) __ptr64
?AllocBuffer@CString@@IEAAXH@Z
; protected: void __cdecl CString::AllocCopy(class CString & __ptr64,int,int,int)const  __ptr64
?AllocCopy@CString@@IEBAXAEAV1@HHH@Z
; public: int __cdecl CStringArray::Append(class CStringArray const & __ptr64) __ptr64
?Append@CStringArray@@QEAAHAEBV1@@Z
; protected: void __cdecl CString::AssignCopy(int,unsigned short const * __ptr64) __ptr64
?AssignCopy@CString@@IEAAXHPEBG@Z
; public: int __cdecl CString::Collate(unsigned short const * __ptr64)const  __ptr64
?Collate@CString@@QEBAHPEBG@Z
; public: int __cdecl CString::Compare(unsigned short const * __ptr64)const  __ptr64
?Compare@CString@@QEBAHPEBG@Z
; public: int __cdecl CString::CompareNoCase(unsigned short const * __ptr64)const  __ptr64
?CompareNoCase@CString@@QEBAHPEBG@Z
; protected: void __cdecl CString::ConcatCopy(int,unsigned short const * __ptr64,int,unsigned short const * __ptr64) __ptr64
?ConcatCopy@CString@@IEAAXHPEBGH0@Z
; protected: void __cdecl CString::ConcatInPlace(int,unsigned short const * __ptr64) __ptr64
?ConcatInPlace@CString@@IEAAXHPEBG@Z
; public: void __cdecl CStringArray::Copy(class CStringArray const & __ptr64) __ptr64
?Copy@CStringArray@@QEAAXAEBV1@@Z
; protected: void __cdecl CString::CopyBeforeWrite(void) __ptr64
?CopyBeforeWrite@CString@@IEAAXXZ
; public: static struct CPlex * __ptr64 __cdecl CPlex::Create(struct CPlex * __ptr64 & __ptr64,unsigned int,unsigned int)
?Create@CPlex@@SAPEAU1@AEAPEAU1@II@Z
; public: class CString & __ptr64 __cdecl CStringArray::ElementAt(int) __ptr64
?ElementAt@CStringArray@@QEAAAEAVCString@@H@Z
; public: void __cdecl CString::Empty(void) __ptr64
?Empty@CString@@QEAAXXZ
; public: int __cdecl CString::Find(unsigned short)const  __ptr64
?Find@CString@@QEBAHG@Z
; public: int __cdecl CString::Find(unsigned short const * __ptr64)const  __ptr64
?Find@CString@@QEBAHPEBG@Z
; public: int __cdecl CString::FindOneOf(unsigned short const * __ptr64)const  __ptr64
?FindOneOf@CString@@QEBAHPEBG@Z
; public: void __cdecl CString::Format(unsigned int,...) __ptr64
?Format@CString@@QEAAXIZZ
; public: void __cdecl CString::Format(unsigned short const * __ptr64,...) __ptr64
?Format@CString@@QEAAXPEBGZZ
; public: void __cdecl CString::FormatMessageW(unsigned int,...) __ptr64
?FormatMessageW@CString@@QEAAXIZZ
; public: void __cdecl CString::FormatMessageW(unsigned short const * __ptr64,...) __ptr64
?FormatMessageW@CString@@QEAAXPEBGZZ
; protected: void __cdecl CString::FormatV(unsigned short const * __ptr64,char * __ptr64) __ptr64
?FormatV@CString@@IEAAXPEBGPEAD@Z
; protected: void __cdecl CMapStringToPtr::FreeAssoc(struct CMapStringToPtr::CAssoc * __ptr64) __ptr64
?FreeAssoc@CMapStringToPtr@@IEAAXPEAUCAssoc@1@@Z
; public: void __cdecl CPlex::FreeDataChain(void) __ptr64
?FreeDataChain@CPlex@@QEAAXXZ
; public: void __cdecl CString::FreeExtra(void) __ptr64
?FreeExtra@CString@@QEAAXXZ
; public: void __cdecl CStringArray::FreeExtra(void) __ptr64
?FreeExtra@CStringArray@@QEAAXXZ
; public: int __cdecl CString::GetAllocLength(void)const  __ptr64
?GetAllocLength@CString@@QEBAHXZ
; protected: struct CMapStringToPtr::CAssoc * __ptr64 __cdecl CMapStringToPtr::GetAssocAt(unsigned short const * __ptr64,unsigned int & __ptr64)const  __ptr64
?GetAssocAt@CMapStringToPtr@@IEBAPEAUCAssoc@1@PEBGAEAI@Z
; public: unsigned short __cdecl CString::GetAt(int)const  __ptr64
?GetAt@CString@@QEBAGH@Z
; public: class CString  __cdecl CStringArray::GetAt(int)const  __ptr64
?GetAt@CStringArray@@QEBA?AVCString@@H@Z
; public: unsigned short * __ptr64 __cdecl CString::GetBuffer(int) __ptr64
?GetBuffer@CString@@QEAAPEAGH@Z
; public: unsigned short * __ptr64 __cdecl CString::GetBufferSetLength(int) __ptr64
?GetBufferSetLength@CString@@QEAAPEAGH@Z
; public: int __cdecl CMapStringToPtr::GetCount(void)const  __ptr64
?GetCount@CMapStringToPtr@@QEBAHXZ
; protected: struct CStringData * __ptr64 __cdecl CString::GetData(void)const  __ptr64
?GetData@CString@@IEBAPEAUCStringData@@XZ
; public: class CString * __ptr64 __cdecl CStringArray::GetData(void) __ptr64
?GetData@CStringArray@@QEAAPEAVCString@@XZ
; public: class CString const * __ptr64 __cdecl CStringArray::GetData(void)const  __ptr64
?GetData@CStringArray@@QEBAPEBVCString@@XZ
; public: unsigned int __cdecl CMapStringToPtr::GetHashTableSize(void)const  __ptr64
?GetHashTableSize@CMapStringToPtr@@QEBAIXZ
; public: int __cdecl CString::GetLength(void)const  __ptr64
?GetLength@CString@@QEBAHXZ
; public: void __cdecl CMapStringToPtr::GetNextAssoc(struct __POSITION * __ptr64 & __ptr64,class CString & __ptr64,void * __ptr64 & __ptr64)const  __ptr64
?GetNextAssoc@CMapStringToPtr@@QEBAXAEAPEAU__POSITION@@AEAVCString@@AEAPEAX@Z
; public: int __cdecl CStringArray::GetSize(void)const  __ptr64
?GetSize@CStringArray@@QEBAHXZ
; public: struct __POSITION * __ptr64 __cdecl CMapStringToPtr::GetStartPosition(void)const  __ptr64
?GetStartPosition@CMapStringToPtr@@QEBAPEAU__POSITION@@XZ
; public: int __cdecl CStringArray::GetUpperBound(void)const  __ptr64
?GetUpperBound@CStringArray@@QEBAHXZ
; public: unsigned int __cdecl CMapStringToPtr::HashKey(unsigned short const * __ptr64)const  __ptr64
?HashKey@CMapStringToPtr@@QEBAIPEBG@Z
; protected: void __cdecl CString::Init(void) __ptr64
?Init@CString@@IEAAXXZ
; public: void __cdecl CMapStringToPtr::InitHashTable(unsigned int,int) __ptr64
?InitHashTable@CMapStringToPtr@@QEAAXIH@Z
; public: void __cdecl CStringArray::InsertAt(int,class CStringArray * __ptr64) __ptr64
?InsertAt@CStringArray@@QEAAXHPEAV1@@Z
; public: void __cdecl CStringArray::InsertAt(int,unsigned short const * __ptr64,int) __ptr64
?InsertAt@CStringArray@@QEAAXHPEBGH@Z
; public: int __cdecl CMapStringToPtr::IsEmpty(void)const  __ptr64
?IsEmpty@CMapStringToPtr@@QEBAHXZ
; public: int __cdecl CString::IsEmpty(void)const  __ptr64
?IsEmpty@CString@@QEBAHXZ
; public: class CString  __cdecl CString::Left(int)const  __ptr64
?Left@CString@@QEBA?AV1@H@Z
; public: int __cdecl CString::LoadStringW(unsigned int) __ptr64
?LoadStringW@CString@@QEAAHI@Z
; public: int __cdecl CCriticalSection::Lock(void) __ptr64
?Lock@CCriticalSection@@QEAAHXZ
; public: virtual int __cdecl CCriticalSection::Lock(unsigned long) __ptr64
?Lock@CCriticalSection@@UEAAHK@Z
; public: virtual int __cdecl CSyncObject::Lock(unsigned long) __ptr64
?Lock@CSyncObject@@UEAAHK@Z
; public: unsigned short * __ptr64 __cdecl CString::LockBuffer(void) __ptr64
?LockBuffer@CString@@QEAAPEAGXZ
; public: int __cdecl CMapStringToPtr::Lookup(unsigned short const * __ptr64,void * __ptr64 & __ptr64)const  __ptr64
?Lookup@CMapStringToPtr@@QEBAHPEBGAEAPEAX@Z
; public: int __cdecl CMapStringToPtr::LookupKey(unsigned short const * __ptr64,unsigned short const * __ptr64 & __ptr64)const  __ptr64
?LookupKey@CMapStringToPtr@@QEBAHPEBGAEAPEBG@Z
; public: void __cdecl CString::MakeLower(void) __ptr64
?MakeLower@CString@@QEAAXXZ
; public: void __cdecl CString::MakeReverse(void) __ptr64
?MakeReverse@CString@@QEAAXXZ
; public: void __cdecl CString::MakeUpper(void) __ptr64
?MakeUpper@CString@@QEAAXXZ
; public: class CString  __cdecl CString::Mid(int)const  __ptr64
?Mid@CString@@QEBA?AV1@H@Z
; public: class CString  __cdecl CString::Mid(int,int)const  __ptr64
?Mid@CString@@QEBA?AV1@HH@Z
; protected: struct CMapStringToPtr::CAssoc * __ptr64 __cdecl CMapStringToPtr::NewAssoc(void) __ptr64
?NewAssoc@CMapStringToPtr@@IEAAPEAUCAssoc@1@XZ
; protected: void __cdecl CString::Release(void) __ptr64
?Release@CString@@IEAAXXZ
; protected: static void __cdecl CString::Release(struct CStringData * __ptr64)
?Release@CString@@KAXPEAUCStringData@@@Z
; public: void __cdecl CString::ReleaseBuffer(int) __ptr64
?ReleaseBuffer@CString@@QEAAXH@Z
; public: void __cdecl CMapStringToPtr::RemoveAll(void) __ptr64
?RemoveAll@CMapStringToPtr@@QEAAXXZ
; public: void __cdecl CStringArray::RemoveAll(void) __ptr64
?RemoveAll@CStringArray@@QEAAXXZ
; public: void __cdecl CStringArray::RemoveAt(int,int) __ptr64
?RemoveAt@CStringArray@@QEAAXHH@Z
; public: int __cdecl CMapStringToPtr::RemoveKey(unsigned short const * __ptr64) __ptr64
?RemoveKey@CMapStringToPtr@@QEAAHPEBG@Z
; public: int __cdecl CString::ReverseFind(unsigned short)const  __ptr64
?ReverseFind@CString@@QEBAHG@Z
; public: class CString  __cdecl CString::Right(int)const  __ptr64
?Right@CString@@QEBA?AV1@H@Z
; protected: static int __cdecl CString::SafeStrlen(unsigned short const * __ptr64)
?SafeStrlen@CString@@KAHPEBG@Z
; public: void __cdecl CMapStringToPtr::SetAt(unsigned short const * __ptr64,void * __ptr64) __ptr64
?SetAt@CMapStringToPtr@@QEAAXPEBGPEAX@Z
; public: void __cdecl CString::SetAt(int,unsigned short) __ptr64
?SetAt@CString@@QEAAXHG@Z
; public: void __cdecl CStringArray::SetAt(int,unsigned short const * __ptr64) __ptr64
?SetAt@CStringArray@@QEAAXHPEBG@Z
; public: void __cdecl CStringArray::SetAtGrow(int,unsigned short const * __ptr64) __ptr64
?SetAtGrow@CStringArray@@QEAAXHPEBG@Z
; public: void __cdecl CStringArray::SetSize(int,int) __ptr64
?SetSize@CStringArray@@QEAAXHH@Z
; public: class CString  __cdecl CString::SpanExcluding(unsigned short const * __ptr64)const  __ptr64
?SpanExcluding@CString@@QEBA?AV1@PEBG@Z
; public: class CString  __cdecl CString::SpanIncluding(unsigned short const * __ptr64)const  __ptr64
?SpanIncluding@CString@@QEBA?AV1@PEBG@Z
; public: void __cdecl CString::TrimLeft(void) __ptr64
?TrimLeft@CString@@QEAAXXZ
; public: void __cdecl CString::TrimRight(void) __ptr64
?TrimRight@CString@@QEAAXXZ
; public: virtual int __cdecl CCriticalSection::Unlock(void) __ptr64
?Unlock@CCriticalSection@@UEAAHXZ
; public: virtual int __cdecl CSyncObject::Unlock(long,long * __ptr64) __ptr64
?Unlock@CSyncObject@@UEAAHJPEAJ@Z
; public: void __cdecl CString::UnlockBuffer(void) __ptr64
?UnlockBuffer@CString@@QEAAXXZ
; public: void * __ptr64 __cdecl CPlex::data(void) __ptr64
?data@CPlex@@QEAAPEAXXZ
