/** * @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 { 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)