openmanus.cpp/include/tool_collection.h

52 lines
1.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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