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; }
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]); }