|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> GlobalMark.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include <afx.h>
|
|
|
|
|
|
#include "MapStringToPtrNoCase.h"
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
|
|
//ȫ<><C8AB><EFBFBD>Եķ<D4B5><C4B7>Ź<EFBFBD><C5B9><EFBFBD>
|
|
|
|
|
|
class AFX_EXT_CLASS CGlobalMark
|
|
|
|
|
|
{
|
|
|
|
|
|
private:
|
|
|
|
|
|
CMapStringToPtrNoCase* m_pBakMark;
|
|
|
|
|
|
std::shared_ptr<CArray<void*,void*>> m_arBakMark;
|
|
|
|
|
|
|
|
|
|
|
|
// ע<>⣡m_arBakMark <09><>Ҫ<EFBFBD>ڹ<EFBFBD><DAB9>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> new<65><77><EFBFBD>ڹ<EFBFBD><DAB9>캯<EFBFBD><ECBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> new <20>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> thread_local <20><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
std::shared_ptr<CArray<void*, void*>> GetArBakMark();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CGlobalMark(void);
|
|
|
|
|
|
virtual ~CGlobalMark(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, short ver);
|
|
|
|
|
|
void WriteMark(CFile &fw, const short& ver);
|
|
|
|
|
|
void WriteMarkDML(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
void WriteMarkPCG(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
|
|
|
|
|
|
void SerializeMark_One(CArchive& ar, CString &key, void*& pDraw, short ver);
|
|
|
|
|
|
static void WriteMark_One(CFile &fw, void* pDraw, short ver);
|
|
|
|
|
|
void WriteMarkDML_One(CFile &fw, void* pDraw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
void WriteMarkPCG_One(CFile &fw, void* pDraw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
|
|
|
|
|
|
void SetMark(CMapStringToPtrNoCase* t);
|
|
|
|
|
|
void* GetMark(CString key);
|
|
|
|
|
|
|
|
|
|
|
|
void BackupMark(void);
|
|
|
|
|
|
void RestoreMark(void);
|
|
|
|
|
|
BOOL Lookup(LPCTSTR key, void*& rValue);
|
|
|
|
|
|
BOOL RemoveKey(LPCTSTR key);
|
|
|
|
|
|
void SetAt(LPCTSTR key, void* pNewValue);
|
|
|
|
|
|
int GetCount(void);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
CMapStringToPtrNoCase* m_pGlobalMark = nullptr;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
extern thread_local CGlobalMark m_GlobalMark;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE BOOL CGlobalMark::Lookup(LPCTSTR key, void*& rValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_pGlobalMark->Lookup(key,rValue);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE BOOL CGlobalMark::RemoveKey(LPCTSTR key)
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_pGlobalMark->RemoveKey(key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE void CGlobalMark::SetAt(LPCTSTR key, void* pNewValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pGlobalMark->SetAt(key,pNewValue);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE int CGlobalMark::GetCount(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (int)m_pGlobalMark->GetCount();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API CGlobalMark * WINAPI AfxGetGlobalMark();
|