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-2025 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