#include "tool.h" #include #include #include class identity : public tool { std::optional> n; tool_env me; std::deque queue; public: identity(tool_env t) : me{t} {} virtual void init(std::optional> next) { n = next; } virtual void execute() { if(has_queue()) { if(n.has_value()) n.value()->enqueue(queue.front()); queue.pop_front(); } } virtual void enqueue(std::string v) { queue.push_back(v); } virtual bool has_queue() { return queue.size()!=0; } }; class echo : public tool { std::optional> n; tool_env me; std::deque queue; std::optional > outlet = std::nullopt; public: echo(tool_env t) : me{t} {} virtual void init(std::optional> next) { n = next; if(me.find("file")!=me.end()) { outlet = std::make_unique(me["file"]); } } virtual void execute() { if(has_queue()) { if(outlet.has_value()) { (*outlet.value())<enqueue(queue.front()); queue.pop_front(); } } virtual void enqueue(std::string v) { queue.push_back(v); } virtual bool has_queue() { return queue.size()!=0; } };