📄 cpgpdata.h
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPData.h,v 1.2 2002/08/06 20:10:19 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CPGPData_h // [
#define Included_CPGPData_h
#include "pgpUtilities.h"
_PGP_BEGIN
// Class CPGPData
class CPGPData
{
NOT_COPYABLE(CPGPData)
public:
CPGPData();
CPGPData(void *pData, PGPSize size, PGPBoolean weDealloc = FALSE);
CPGPData(PGPContextRef context, PGPSize size);
~CPGPData();
void * Get() {return mData;}
const void * Get() const {return mData;}
PGPBoolean WeAllocated() const {return mWeAllocated;}
PGPSize Size() const {return mSize;}
void Allocate(PGPContextRef context, PGPSize size);
void Attach(void *pData, PGPSize size, PGPBoolean weDealloc = FALSE);
void Clear();
private:
PGPBoolean mWeAllocated;
void *mData;
PGPSize mSize;
};
// Class CPGPData member functions
inline
CPGPData::CPGPData() : mWeAllocated(FALSE), mData(NULL), mSize(0)
{
}
inline
CPGPData::CPGPData(void *pData, PGPSize size, PGPBoolean weDealloc)
: mWeAllocated(FALSE), mData(NULL), mSize(0)
{
Attach(pData, size, weDealloc);
}
inline
CPGPData::CPGPData(PGPContextRef context, PGPSize size)
: mWeAllocated(FALSE), mData(NULL), mSize(0)
{
Allocate(context, size);
}
inline
CPGPData::~CPGPData()
{
try
{
Clear();
}
catch (CComboError&) { }
}
inline
void
CPGPData::Allocate(PGPContextRef context, PGPSize size)
{
pgpAssert(PGPContextRefIsValid(context));
void *pData = PGPNewData(PGPPeekContextMemoryMgr(context), size,
NULL);
if (IsNull(pData))
THROW_PGPERROR(kPGPError_OutOfMemory);
Clear();
mWeAllocated = TRUE;
mData = pData;
mSize = size;
}
inline
void
CPGPData::Attach(void *pData, PGPSize size, PGPBoolean weDealloc)
{
pgpAssertAddrValid(pData, VoidAlign);
Clear();
mWeAllocated = weDealloc;
mData = pData;
mSize = size;
}
inline
void
CPGPData::Clear()
{
if (WeAllocated())
PGPFreeData(mData);
mWeAllocated = FALSE;
mData = NULL;
mSize = 0;
}
_PGP_END
#endif // ] Included_CPGPData_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -