aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-07 21:29:27 +0100
committerJay Berkenbilt <ejb@ql.org>2022-01-30 19:11:03 +0100
commit53ba65eb59d0bced37e73d8bf96a0d7a7285f662 (patch)
tree29049c9c37ba25ea22313b83ac93e20a0a48b74b /include
parenta301cc5373f14fd03e51619b0bd5fad22b84e115 (diff)
downloadqpdf-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.hh19
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;