9 #include <hilti/ast/expression.h> 10 #include <hilti/ast/expressions/resolved-operator.h> 11 #include <hilti/ast/expressions/unresolved-operator.h> 12 #include <hilti/ast/operator.h> 13 #include <hilti/ast/types/struct.h> 21 using OperatorMap = std::map<Kind, std::vector<Operator>>;
24 const OperatorMap&
all()
const {
return _operators; }
27 const std::vector<Operator>&
allOfKind(Kind kind)
const {
28 if (
auto x = _operators.find(kind); x != _operators.end() )
31 logger().internalError(
"unregistered operator requested in allOfKind()");
35 void register_(Kind kind, Operator info) { _operators[kind].push_back(std::move(info)); }
41 for (
auto a : _operators ) {
42 for (
const auto& info : a.second ) {
44 auto n = abi::__cxa_demangle(info.typename_().c_str(),
nullptr,
nullptr, &status);
45 HILTI_DEBUG(logging::debug::Overloads,
hilti::util::fmt(
"registered %s for operator '%s'", (n ? n : info.typename_().c_str()), to_string(info.kind())));
58 OperatorMap _operators;
const OperatorMap & all() const
Definition: operator-registry.h:24
const std::vector< Operator > & allOfKind(Kind kind) const
Definition: operator-registry.h:27
Definition: operator-registry.h:19
std::string fmt(const char *fmt, const Args &... args)
Definition: util.h:80
Definition: operator-registry.h:62
static auto & singleton()
Definition: operator-registry.h:52
void register_(Kind kind, Operator info)
Definition: operator-registry.h:35