Program Listing for File MinimalModuleContainer.h
↰ Return to documentation for file (include/mola_kernel/MinimalModuleContainer.h)
/* -------------------------------------------------------------------------
* A Modular Optimization framework for Localization and mApping (MOLA)
* Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
* See LICENSE for license information.
* ------------------------------------------------------------------------- */
#pragma once
#include <mola_kernel/interfaces/ExecutableBase.h>
#include <string>
#include <vector>
namespace mola
{
class MinimalModuleContainer
{
public:
MinimalModuleContainer() = default;
~MinimalModuleContainer();
MinimalModuleContainer(const std::vector<mola::ExecutableBase::Ptr>& mods)
: modules_(mods)
{
for (auto& m : modules_)
{
ASSERT_(m);
installNameServer(*m);
}
}
void add(const mola::ExecutableBase::Ptr& m)
{
ASSERT_(m);
modules_.push_back(m);
installNameServer(*m);
}
const auto& modules() const { return modules_; }
private:
std::vector<mola::ExecutableBase::Ptr> modules_;
void installNameServer(mola::ExecutableBase& m);
ExecutableBase::Ptr nameServerImpl(const std::string& name);
};
} // namespace mola