75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
/**
|
||
* @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 ///<PAI_FRAME_PIOBJECTMODEL_PAIVIRTUALOBJECT_H
|