/** * @file XNObject.h * @author jinchao * @brief 基础对象类 * @version 1.0 * @date 2025-01-08 * * @copyright Copyright (c) 2025 COMAC * */ #pragma once #include "XNGlobalDefine/XNDefine.h" #include "XNLogger/XNLogger.h" namespace XNSim { 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 */ XN_UINT32 GetUniqueId(); /** * @brief 设置唯一ID * @param uniqueId 唯一ID */ void SetUniqueId(const XN_UINT32 &uniqueId); /** * @brief 获取对象名称 * @return 对象名称 */ const XN_STRING &GetObjectName(); /** * @brief 设置对象名称 * @param name 对象名称 */ void SetObjectName(const XN_STRING &name); }; class XNFramework; class XNDDSManager; class XNEventManager; class XNModelManager; class XNServiceManager; class XNThreadManager; class XNTimeManager; class XNConfigManager; class XNThreadObject; class XNModelObject; class XNServiceObject; XNCLASS_PTR_DECLARE(XNFramework) XNCLASS_PTR_DECLARE(XNDDSManager) XNCLASS_PTR_DECLARE(XNEventManager) XNCLASS_PTR_DECLARE(XNModelManager) XNCLASS_PTR_DECLARE(XNServiceManager) XNCLASS_PTR_DECLARE(XNThreadManager) XNCLASS_PTR_DECLARE(XNTimeManager) XNCLASS_PTR_DECLARE(XNConfigManager) XNCLASS_PTR_DECLARE(XNThreadObject) XNCLASS_PTR_DECLARE(XNModelObject) XNCLASS_PTR_DECLARE(XNServiceObject) } // namespace XNSim