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
|