75 lines
1.5 KiB
C++
75 lines
1.5 KiB
C++
/**
|
||
* @file PaiObjectRecycler.h
|
||
* @brief 数据树结点回收站,当调用PaiObject的Delete函数后,还对象并不会被立即释放,而是会被放入该回收站,该回收站会管理被删掉的对象的声明周期
|
||
* @date 2011-09-17
|
||
*/
|
||
#ifndef PAI_FRAME_IOBJECTMODEL_PAIOBJECTRECYCLER_H
|
||
#define PAI_FRAME_IOBJECTMODEL_PAIOBJECTRECYCLER_H
|
||
|
||
#include <QList>
|
||
#include <QObject>
|
||
#include "Turtle.h"
|
||
|
||
namespace pai
|
||
{
|
||
namespace objectmodel
|
||
{
|
||
class PaiObject;
|
||
}
|
||
}
|
||
|
||
namespace pai
|
||
{
|
||
namespace objectmodel
|
||
{
|
||
/**
|
||
* @class PaiObjectRecycler
|
||
* @brief 数据树结点回收站
|
||
*/
|
||
class PAI_OBJECTMODEL_EXPORT PaiObjectRecycler : public QObject
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
/**
|
||
* @brief 构造函数
|
||
*/
|
||
PaiObjectRecycler();
|
||
|
||
/**
|
||
* @brief 虚析构函数
|
||
*/
|
||
virtual ~PaiObjectRecycler();
|
||
|
||
/**
|
||
*@brief 将数据树上删除的结点放进回收站
|
||
*@param[in] pChild 被删除的孩子
|
||
*/
|
||
void Push(PaiObject *pChild);
|
||
|
||
/**
|
||
* @brief 获得当前回收站中的对象个数
|
||
* @return 当前回收站中的对象个数
|
||
*/
|
||
int GetObjectsCount() const;
|
||
|
||
private:
|
||
/**
|
||
*@brief 判断回收站中是否存在孩子结点
|
||
*@param[in] pChild 被删除的孩子
|
||
*/
|
||
bool IsExist(PaiObject *pChild);
|
||
|
||
/**
|
||
*@brief 清空回收站
|
||
*/
|
||
void Clear();
|
||
|
||
private:
|
||
QList< pai::objectmodel::PaiObject* > m_DeletedObjects; //回收站中对象列表
|
||
};
|
||
|
||
}
|
||
}
|
||
|
||
#endif ///< PAI_FRAME_IOBJECTMODEL_PAIOBJECTRECYCLER_H
|