Program Listing for File register_using_config.hpp

Return to documentation for file (rcppsw/metrics/register_using_config.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <utility>

#include "rcppsw/rcppsw.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace rcppsw::metrics {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/

template <typename TSinkRegisterer, typename TConfig>
class register_using_config {
 public:
  register_using_config(const TSinkRegisterer&& registerer,
                        const TConfig* config)
      : mc_config(config),
        m_registerer(std::move(registerer)) {}

  register_using_config& operator=(const register_using_config&) = default;
  register_using_config(const register_using_config&) = default;

  template <typename TPair>
  void operator()(const TPair& pair) {
    m_registerer(pair, mc_config);
  }

 private:
  /* clang-format off */
  const TConfig*  mc_config;

  TSinkRegisterer m_registerer;
  /* clang-format on */
};

} /* namespace rcppsw::metrics */