#pragma once
#include <functional>
#include <map>
#include <string>
#include <set>
namespace solidity::frontend
{
class MultiUseYulFunctionCollector
{
public:
std::string createFunction(std::string const& _name, std::function<std::string()> const& _creator);
std::string createFunction(
std::string const& _name,
std::function<std::string(std::vector<std::string>&, std::vector<std::string>&)> const& _creator
);
std::string requestedFunctions();
bool contains(std::string const& _name) const { return m_requestedFunctions.count(_name) > 0; }
private:
std::set<std::string> m_requestedFunctions;
std::string m_code;
};
}