diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-01-07 21:29:27 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-01-30 19:11:03 +0100 |
commit | 53ba65eb59d0bced37e73d8bf96a0d7a7285f662 (patch) | |
tree | 29049c9c37ba25ea22313b83ac93e20a0a48b74b /include | |
parent | a301cc5373f14fd03e51619b0bd5fad22b84e115 (diff) | |
download | qpdf-53ba65eb59d0bced37e73d8bf96a0d7a7285f662.tar.zst |
QPDFArgParser: handle optional choices including help
Handle optional choices in addition to required choices. Refactor the
way help options are added to completion to make it work with optional
help choices.
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/QPDFArgParser.hh | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/include/qpdf/QPDFArgParser.hh b/include/qpdf/QPDFArgParser.hh index 7054a706..ea51ca67 100644 --- a/include/qpdf/QPDFArgParser.hh +++ b/include/qpdf/QPDFArgParser.hh @@ -115,13 +115,14 @@ class QPDFArgParser QPDF_DLL void addOptionalParameter(std::string const& arg, param_arg_handler_t); QPDF_DLL - void addRequiredChoices( - std::string const& arg, param_arg_handler_t, char const** choices); - QPDF_DLL + void addChoices( + std::string const& arg, param_arg_handler_t, + bool required, char const** choices); // If an option is shared among multiple tables and uses identical // handlers, you can just copy it instead of repeating the // registration call. + QPDF_DLL void copyFromOtherTable(std::string const& arg, std::string const& other_table); @@ -179,7 +180,7 @@ class QPDFArgParser bare_arg_handler_t bare_arg_handler; param_arg_handler_t param_arg_handler; }; - friend struct OptionEntry; + typedef std::map<std::string, OptionEntry> option_table_t; OptionEntry& registerArg(std::string const& arg); @@ -187,18 +188,20 @@ class QPDFArgParser void argCompletionBash(); void argCompletionZsh(); + void argHelp(char*); void checkCompletion(); void handleArgFileArguments(); void handleBashArguments(); void readArgsFromFile(char const* filename); void doFinalChecks(); - void addOptionsToCompletions(); - void addChoicesToCompletions(std::string const&, std::string const&); + void addOptionsToCompletions(option_table_t&); + void addChoicesToCompletions( + option_table_t&, std::string const&, std::string const&); + void insertCompletions( + option_table_t&, std::string const&, std::string const&); void handleCompletion(); - typedef std::map<std::string, OptionEntry> option_table_t; - class Members { friend class QPDFArgParser; |