92 lines
1.7 KiB
C++

/**
* @file XNObject.h
* @author jinchao
* @brief 基础对象类
* @version 1.0
* @date 2025-01-08
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include "XNCore_global.h"
#include "XNLogger.h"
struct XNObjectPrivate;
/**
* @brief 基础对象类
*/
class XNCORE_EXPORT XNObject : public std::enable_shared_from_this<XNObject>
{
XN_METATYPE_P(XNObject)
XN_NOCOPYABLE(XNObject)
protected:
using PrivateType = XNObjectPrivate;
/**
* @brief 私有数据成员
*/
PrivateType *_Private_Ptr;
public:
/**
* @brief 构造函数
*/
XNObject();
/**
* @brief 析构函数
*/
virtual ~XNObject();
protected:
/**
* @brief 构造函数
* @param p 私有数据成员
*/
XNObject(PrivateType *p);
public:
/**
* @brief 获取唯一ID
* @return 唯一ID
*/
uint32_t GetUniqueId();
/**
* @brief 设置唯一ID
* @param uniqueId 唯一ID
*/
void SetUniqueId(const uint32_t &uniqueId);
/**
* @brief 获取对象名称
* @return 对象名称
*/
const std::string &GetObjectName();
/**
* @brief 设置对象名称
* @param name 对象名称
*/
void SetObjectName(const std::string &name);
};
class XNFramework;
class XNDDSManager;
class XNEventManager;
class XNModelManager;
class XNScenarioManager;
class XNServiceManager;
class XNThreadManager;
class XNTimeManager;
XNCLASS_PTR_DECLARE(XNFramework)
XNCLASS_PTR_DECLARE(XNDDSManager)
XNCLASS_PTR_DECLARE(XNEventManager)
XNCLASS_PTR_DECLARE(XNModelManager)
XNCLASS_PTR_DECLARE(XNScenarioManager)
XNCLASS_PTR_DECLARE(XNServiceManager)
XNCLASS_PTR_DECLARE(XNThreadManager)
XNCLASS_PTR_DECLARE(XNTimeManager)