Program Listing for File sierra_parser.hpp

Return to documentation for file (cosm/ros/config/server/sierra_parser.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <string>
#include <memory>

#include "rcppsw/config/server/server_config_parser.hpp"
#include "rcppsw/er/client.hpp"

#include "cosm/ros/config/sierra_config.hpp"

#include "cosm/cosm.hpp"

/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace cosm::ros::config::server {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class sierra_parser : public rer::client<sierra_parser>,
                      public rconfig::server::server_config_parser {
 public:
  using config_type = sierra_config;

  sierra_parser(void);

  void parse(void) override RCPPSW_COLD;
  bool validate(void) const override RCPPSW_COLD;

 private:
  RCPPSW_COLD const rconfig::base_config* config_get_impl(void) const override {
    return m_config.get();
  }

  /* clang-format off */

  std::unique_ptr<config_type> m_config{nullptr};
  /* clang-format on */
};

} /* namespace cosm::ros::config::server */