ribi::Help::Help(
  const std::string& program_name,
  const std::string& program_description,
  const std::vector<Option>& options,
  const std::vector<std::string> example_uses)
  : m_example_uses(example_uses),
    m_options(AddDefaultOptions(options)),
    m_program_description(program_description),
    m_program_name(program_name)
{

  #ifndef NDEBUG
  //checks if there are no short or long option occurring twice
  const std::size_t sz = m_options.size();
  for (std::size_t i=0; i!=sz-1; ++i)
  {
    const Option& a { m_options[i] };
    for (std::size_t j=i+1; j!=sz; ++j)
    {
      assert(j < m_options.size());
      const Option& b { m_options[j] };
      if (a.m_short == b.m_short
        || a.m_long == b.m_long)
      {
        TRACE(a.m_short);
        TRACE(a.m_long);
        TRACE(a.m_description);
        TRACE(b.m_short);
        TRACE(b.m_long);
        TRACE(b.m_description);
      }
      assert(a.m_short != b.m_short
        && "Every short option must be unique");
      assert(a.m_long != b.m_long
        && "Every long option must be unique");
    }
  }
  #endif
}
Exemple #2
0
void EssExporter::AddDefaultOption()
{
	AddDefaultOptions(mWriter, mOptionName);
}