/** * @file PaiObjectRecycler.h * @brief 数据树结点回收站,当调用PaiObject的Delete函数后,还对象并不会被立即释放,而是会被放入该回收站,该回收站会管理被删掉的对象的声明周期 * @date 2011-09-17 */ #ifndef PAI_FRAME_IOBJECTMODEL_PAIOBJECTRECYCLER_H #define PAI_FRAME_IOBJECTMODEL_PAIOBJECTRECYCLER_H #include #include #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