#pragma once #include "XNCore_global.h" #include namespace XNSim { template using XN_ENABLE_SHARED_FROM_THIS = std::enable_shared_from_this; // 静态指针类型转换辅助函数 template FORCEINLINE ToType XNStaticCastHelper(const FromType &from) { return std::static_pointer_cast(from); } // 动态指针类型转换辅助函数 template FORCEINLINE ToType XNCastHelper(const FromType &from) { return std::dynamic_pointer_cast(from); } } // namespace XNSim // 静态类型转换宏 #define XN_CAST(from, to) XNStaticCastHelper(from) // 获取当前对象的智能指针 #define XN_THISPTR std::static_pointer_cast(shared_from_this()) // 类智能指针声明宏 #define XNCLASS_PTR_DECLARE(a) \ using a##Ptr = std::shared_ptr; \ using a##WPtr = std::weak_ptr; \ using a##UPtr = std::unique_ptr; \ using a##ConsPtr = std::shared_ptr; // 结构体智能指针声明宏 #define XNSTRUCT_PTR_DECLARE(a) \ using a##Ptr = std::shared_ptr; \ using a##WPtr = std::weak_ptr; \ using a##UPtr = std::unique_ptr; \ using a##ConsPtr = std::shared_ptr;