Horizon
Loading...
Searching...
No Matches
log_util.hpp
1#pragma once
2#include "common/object_descr.hpp"
3#include "logger.hpp"
4#include "util/uuid.hpp"
5#include <map>
6#include <string>
7#include <tuple>
8
9namespace horizon {
10template <typename T, typename... Args1>
11void load_and_log(std::map<UUID, T> &map, ObjectType type, std::tuple<Args1...> args,
12 Logger::Domain dom = Logger::Domain::UNSPECIFIED)
13{
14 load_and_log(map, object_descriptions.at(type).name, std::forward<std::tuple<Args1...>>(args), dom);
15}
16
17template <typename T, typename... Args1>
18void load_and_log(std::map<UUID, T> &map, const std::string &type, std::tuple<Args1...> args,
19 Logger::Domain dom = Logger::Domain::UNSPECIFIED)
20{
21 auto uu = std::get<0>(args);
22 try {
23 map.emplace(std::piecewise_construct, std::forward_as_tuple(uu), std::forward<std::tuple<Args1...>>(args));
24 }
25 catch (const std::exception &e) {
26 Logger::log_warning("couldn't load " + type + " " + (std::string)uu, dom, e.what());
27 }
28 catch (...) {
29 Logger::log_warning("couldn't load " + type + " " + (std::string)uu, dom);
30 }
31}
32} // namespace horizon