#include <utility>

#include <utility>

// This code was generated by CLI, a command line interface
// compiler for C++.
//

namespace cli
{
  // unknown_mode
  //
  inline unknown_mode::
  unknown_mode (value v)
  : v_ (v)
  {
  }

  // exception
  //
  inline std::ostream&
  operator<< (std::ostream& os, const exception& e)
  {
    e.print (os);
    return os;
  }

  // unknown_option
  //
  inline unknown_option::
  unknown_option (std::string  option)
  : option_ (std::move(std::move(option)))
  {
  }

  inline const std::string& unknown_option::
  option () const
  {
    return option_;
  }

  // unknown_argument
  //
  inline unknown_argument::
  unknown_argument (std::string  argument)
  : argument_ (std::move(std::move(argument)))
  {
  }

  inline const std::string& unknown_argument::
  argument () const
  {
    return argument_;
  }

  // missing_value
  //
  inline missing_value::
  missing_value (std::string  option)
  : option_ (std::move(std::move(option)))
  {
  }

  inline const std::string& missing_value::
  option () const
  {
    return option_;
  }

  // invalid_value
  //
  inline invalid_value::
  invalid_value (std::string  option,
                 std::string  value)
  : option_ (std::move(std::move(option))),  value_ (std::move(std::move(value)))
  {
  }

  inline const std::string& invalid_value::
  option () const
  {
    return option_;
  }

  inline const std::string& invalid_value::
  value () const
  {
    return value_;
  }

  // argv_scanner
  //
  inline argv_scanner::
  argv_scanner (int& argc, char** argv, bool erase)
  : i_ (1), argc_ (argc), argv_ (argv), erase_ (erase)
  {
  }

  inline argv_scanner::
  argv_scanner (int start, int& argc, char** argv, bool erase)
  : i_ (start), argc_ (argc), argv_ (argv), erase_ (erase)
  {
  }

  inline int argv_scanner::
  end () const
  {
    return i_;
  }
}

// options
//

inline const bool& options::
help () const
{
  return this->help_;
}

inline const bool& options::
version () const
{
  return this->version_;
}

inline const std::string& options::
file () const
{
  return this->file_;
}

inline const std::string& options::
output_dir () const
{
  return this->output_dir_;
}

inline const bool& options::
autonext () const
{
  return this->autonext_;
}

