Program Listing for File base_cli.hpp
↰ Return to documentation for file (rcppsw/utils/base_cli.hpp)
#pragma once
/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <boost/program_options.hpp>
#include <string>
#include "rcppsw/rcppsw.hpp"
/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace bpo = boost::program_options;
namespace rcppsw::utils {
/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class base_cli {
 public:
  explicit base_cli(const std::string& mnemonic = "");
  virtual ~base_cli(void) = default;
  status_t parse(int argc, char** argv);
  virtual bool validate(void) { return true; }
  void print(void);
  const bpo::variables_map& vm(void) { return m_vm; }
  bpo::options_description* desc(void) { return &m_desc; }
  const std::string& prog_name(void) { return m_prog_name; }
 private:
  /* clang-format off */
  bpo::variables_map       m_vm{};
  bpo::options_description m_desc;
  std::string              m_prog_name{};
  std::string              m_base_output_dir{};
  /* clang-format on */
};
} /* namespace rcppsw::utils */