14 #include <mrpt/system/CTimeLogger.h>
26 const mrpt::optional_ref<mrpt::system::CTimeLogger>& profiler)
28 for (
const auto&
f : filters)
30 ASSERT_(
f.get() !=
nullptr);
32 std::optional<mrpt::system::CTimeLoggerEntry> tle;
33 if (profiler) tle.emplace(*profiler,
f->GetRuntimeClass()->className);
40 const mrpt::containers::yaml& c,
const mrpt::system::VerbosityLevel& vLevel)
42 if (c.isNullNode())
return {};
44 ASSERT_(c.isSequence());
48 for (
const auto& entry : c.asSequence())
50 const auto& e = entry.asMap();
52 const auto sClass = e.at(
"class_name").as<
std::string>();
53 auto o = mrpt::rtti::classFactory(sClass);
56 auto f = std::dynamic_pointer_cast<FilterBase>(o);
58 f, mrpt::format(
"`%s` class seems not to be derived from FilterBase", sClass.c_str()));
60 f->setMinLoggingLevel(vLevel);
62 f->initialize(e.at(
"params"));
72 const auto yamlContent = mrpt::containers::yaml::FromFile(
filename);
74 ASSERT_(yamlContent.has(
"filters") && yamlContent[
"filters"].isSequence());