virtual int handle(
        ff_replacement_code_t   code
    ,   size_t                  numParameters
    ,   int                     parameterIndex
    ,   ff_string_slice_t*      slice
    ,   void*                   reserved0
    ,   size_t                  reserved1
    ,   void*                   reserved2
    )
    {
        if(FF_REPLACEMENTCODE_MISSING_ARGUMENT == code)
        {
            return +1; // Ignore unreferenced arguments
        }

        if(NULL != m_previous.handler)
        {
            return (*m_previous.handler)(m_previous.param, code, numParameters, parameterIndex, slice, reserved0, reserved1, reserved2);
        }

        if(FF_REPLACEMENTCODE_MISSING_ARGUMENT == code)
        {
            throw missing_argument_exception("a required argument is missing from the argument list", code, int(numParameters), parameterIndex);
        }

        return 0;
    }
Example #2
0
void
Options::checked_parse_arg
(
  int argc,
  char* argv[],
  int argPos,
  std::shared_ptr<OptionDetails> value,
  const std::string& name
)
{
  if (argPos >= argc)
  {
    throw missing_argument_exception(name);
  }

  parse_option(value, name, argv[argPos]);
}