You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.0 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> GlobalMark.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
1 month ago
#include <afx.h>
1 month ago
#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();