#include "hooks.hpp"
INIT_EARLY Hooks::handlers_t Hooks::hooks[DEINIT+1];
void Hooks::add(handler_t handler, hook_t hook, unsigned prio) {
handlers_t& vec = hooks[hook];
handlers_t::iterator it = vec.begin();
while (it != vec.end() && it->first < prio) ++it;
vec.insert(it, std::pair<unsigned, handler_t>(prio, handler));
}
void Hooks::run(hook_t hook) {
log(info, "running hooks %d", (int)hook);
for (handlers_t::const_iterator it = hooks[hook].begin(); it != hooks[hook].end(); ++it) {
(*it->second)();
}
}