/** * * @file FITKNodeList.h * @brief 节点列表声明 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 * */ #ifndef __FITKNODELIST_H__ #define __FITKNODELIST_H__ #include "FITKInterfaceModelAPI.h" #include "FITK_Kernel/FITKCore/FITKAbstractObject.hpp" #include #include #include namespace Core { class FITKNode; } namespace Interface { /** * @brief 节点列表 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ class FITKInerfaceModelAPI FITKNodeList //: public Core::FITKAbstractObject { public: /** * @brief Construct a new FITKNodeList object * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ explicit FITKNodeList() = default; /** * @brief Destroy the FITKNodeList object * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ virtual ~FITKNodeList(); /** * @brief 追加节点 * @param[i] x x坐标 * @param[i] y y坐标 * @param[i] z z坐标 * @return int 节点ID * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ virtual int addNode(const double x, const double y, const double z); /** * @brief 追加节点 * @param[i] id 节点ID * @param[i] x x坐标 * @param[i] y y坐标 * @param[i] z z坐标 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ virtual void addNode(const int id, const double x, const double y, const double z); /** * @brief 移除第index个节点,index从0开始 * @param[i] index 节点索引 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ void removeNodeAt(const int index); /** * @brief 根据ID移除节点 * @param[i] id 节点ID * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ void removeNodeByID(const int id); /** * @brief 获取节点数量 * @return int * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ int getNodeCount(); /** * @brief 获取第index个节点 * @param[i] index 节点索引 * @return Core::FITKNode* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ Core::FITKNode* getNodeAt(const int index); /** * @brief 根据ID获取节点 * @param[i] id 节点ID * @return Core::FITKNode* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ Core::FITKNode* getNodeByID(const int id); /** * @brief 根据索引获取节点ID * @param[i] index 索引 * @return int * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ int getNodeIDByIndex(const int index); /** * @brief 根据ID获取节点索引 * @param[i] id 节点ID * @return int * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ int getNodeIndexByID(const int id); /** * @brief 获取节点最大id * @return int * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-28 */ int getNodeMaxID(); /** * @brief 移除全部节点 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-28 */ void removeAllNode(); private: /** * @brief 线程互斥锁 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ QMutex _mutex; /** * @brief 节点列表 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ QList _nodeList{}; /** * @brief 辅助存储, ID与index映射关系 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-02-28 */ QMap _idIndexMap{}; /** * @brief 辅助存储, 最大节点ID * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-22 */ int _nodeMaxID = 0; }; } #endif // !__FITKNODELIST_H__