#pragma once #include "klammer.h" #include "target_registry.h" class Klammer_registry { public: Klammer_registry() = default; void add(const Argtype_registry& argtypes, const Target_registry& targets, Option_set_registry& option_sets, std::vector::iterator begin, std::vector::iterator end, std::vector& katoms); void rationalize(const Target_registry& targets); void check_klammer(const std::string& name, const std::string& target, const Locator& loc) const; const std::vector* constant_body(const std::string& name) const; std::string instance_list(int margin) const; // With a search string, only the klammers whose NAME or DESCRIPTION // contains it, case-insensitively and with whitespace collapsed on both // sides (a description written across several lines in a ".k" file must // still match a phrase typed on one). Empty when nothing matched, which // is how the caller knows to say so. std::string describe(int margin=0, const std::string& search="") const; std::map m_klammers {}; };