#ifndef OPENMANUS_TOOL_COLLECTION_H #define OPENMANUS_TOOL_COLLECTION_H #include #include #include #include #include "tool_base.h" namespace openmanus { /** * @class ToolCollection * @brief 工具集合类,管理所有可用的工具 */ class ToolCollection { public: ToolCollection(); ~ToolCollection() = default; /** * @brief 添加工具到集合中 * @param tool 要添加的工具 */ void addTool(std::unique_ptr tool); /** * @brief 根据名称获取工具 * @param name 工具名称 * @return 工具指针,如果不存在则返回nullptr */ ToolBase* getTool(const std::string& name); /** * @brief 获取所有工具的名称 * @return 工具名称列表 */ std::vector getToolNames() const; /** * @brief 获取工具数量 * @return 工具数量 */ size_t size() const { return tools_.size(); } private: std::unordered_map> tools_; }; } // namespace openmanus #endif // OPENMANUS_TOOL_COLLECTION_H