/** * @file PaiVirtualObject.h * @brief 该类对象不保存在数据库,将自动赋予虚拟DBID * @date 2012-05-15 */ #ifndef PAI_FRAME_PIOBJECTMODEL_PAIVIRTUALOBJECT_H #define PAI_FRAME_PIOBJECTMODEL_PAIVIRTUALOBJECT_H #include "PaiObject.h" #include "Turtle.h" namespace pai { namespace objectmodel { /** * @class PaiVirtualObject * @brief 该类对象不保存在数据库,将自动赋予虚拟DBID */ class PAI_OBJECTMODEL_EXPORT PaiVirtualObject: public PaiObject { public: DECLARE_PAI_OBJECT(PaiVirtualObject, "{8ed66593-743e-43dc-9b11-cf548a0d129d}") /** * @brief 构造函数 * @param[in] pParent 父对象指针 */ PaiVirtualObject(PaiObject *pParent = NULL); /** * @brief 虚析构函数 */ virtual ~PaiVirtualObject(); /** * @brief 获得父节点的DBID * @return 父节点DBID */ long long GetParentDBID() const; /** * @brief 加载DBID为dbid的数据,不加载孩子 * @param[in] dbid 需要加载对象DBID * @return 是否加载成功 * @note 该函数在虚对象下无意义,因为无需加载,此处仅为防止抛出异常 */ virtual bool Load(const long long dbid); /** * @brief 克隆参数对象 * @param[in] srcObject 源对象 * @note 该函数在基类不会抛出异常,因需对象一般不能克隆,因此此处来抛出异常,防止出错 */ virtual void Clone(const PaiObject & srcObject); /** * @brief 生成新的虚拟DBID * @return 新的虚拟DBID */ static long long GenerateVirtualDBID(); private: /** * @note 某些节点不是在数据库保存的,但这时也许要一个唯一DBID来进行查询该对象, * 对此类对象用该变量计数来赋予一个唯一的虚拟DBID,计数从 -1 开始,依次递减,该类定义为0. */ static long long m_VirtualDBIDCounter; ///< 虚拟DBID }; } } #endif ///