#pragma once

#include "klammer.h"
#include "target_set.h"

class Klammer_set
{
public:
    Klammer_set() = default;
    void add(Argtype_set argtypes, Target_set& targets,
             std::vector<Katom>::iterator begin, std::vector<Katom>::iterator end, std::vector<Katom>& katoms);
    void rationalize(Target_set targets);
    void check_klammer(std::string name, std::string target, Locator loc);
    const std::vector<Katom>* constant_body(const std::string& name) const;
    std::string instance_list(int margin) const;
    std::string describe(int margin=0) const;

    std::map<std::string, Klammer> m_klammers {};
};
