21#ifndef PALUDIS_GUARD_ARGS_ARGS_OPTION_HH
22#define PALUDIS_GUARD_ARGS_ARGS_OPTION_HH 1
24#include <paludis/util/iterator_range.hh>
26#include <paludis/util/wrapped_forward_iterator.hh>
27#include <paludis/util/type_list.hh>
28#include <paludis/util/named_value.hh>
29#include <paludis/util/visitor.hh>
48 typedef Name<struct name_description> description;
49 typedef Name<struct name_long_name> long_name;
50 typedef Name<struct name_short_name> short_name;
64 enum ArgsOptionSpecifiedness
78 StringArg, AliasArg, SwitchArg, IntegerArg, EnumArg, StringSetArg, StringSequenceArg>::Type>
80 friend class ArgsHandler;
85 const std::string _long_name;
86 const char _short_name;
87 const std::string _description;
89 ArgsOptionSpecifiedness _specified;
91 ArgsOption(
const ArgsOption &);
92 void operator= (
const ArgsOption &);
143 return _specified != aos_not;
153 return _specified == aos_specified;
211 bool _can_be_negated;
240 std::string _argument;
241 bool _can_be_negated;
243 using ValidatorFunction = std::function<void (
const std::string &)>;
244 ValidatorFunction _validator;
264 const std::string &
argument()
const {
return _argument; }
290 using ValidatorFunction = std::function<void (
const std::string &)>;
291 ValidatorFunction _validator;
302 friend class StringSetArg;
345 ~StringSetArg()
override;
352 struct ConstIteratorTag;
355 ConstIterator begin_args()
const;
356 ConstIterator end_args()
const;
369 struct AllowedArgConstIteratorTag;
371 const std::pair<std::string, std::string> > AllowedArgConstIterator;
373 AllowedArgConstIterator begin_allowed_args()
const;
374 AllowedArgConstIterator end_allowed_args()
const;
406 ~StringSequenceArg()
override;
413 struct ConstIteratorTag;
416 ConstIterator begin_args()
const;
417 ConstIterator end_args()
const;
444 ArgsOption *
const _other;
451 AliasArg(ArgsOption *
const other,
const std::string & new_long_name,
bool is_hidden =
false);
455 return _other->specified();
460 return _other->explicitly_specified();
465 _other->set_specified(value);
468 virtual bool hidden()
const
473 virtual void set_hidden(
const bool value)
554 std::string _argument;
555 std::string _default_arg;
566 friend class EnumArg;
599 EnumArgOptions & operator() (
const std::string &,
const char,
const std::string &);
643 struct AllowedArgConstIteratorTag;
647 AllowedArgConstIterator begin_allowed_args()
const;
648 AllowedArgConstIterator end_allowed_args()
const;
662 const std::pair<std::
string, std::
string> >;
Definition visitor.hh:326
Definition visitor.hh:411
Definition iterator_range.hh:29
Definition named_value.hh:51
Definition sequence.hh:51
Definition wrapped_forward_iterator.hh:42
Definition args_option.hh:442
AliasArg(ArgsOption *const other, const std::string &new_long_name, bool is_hidden=false)
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
bool explicitly_specified() const override
Definition args_option.hh:458
bool specified() const override
Definition args_option.hh:453
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
bool can_be_negated() const override
ArgsOption * other() const
Definition args_option.hh:481
void set_specified(const ArgsOptionSpecifiedness value) override
Definition args_option.hh:463
Definition args_group.hh:51
virtual ~ArgsOption()=default
const std::string & long_name() const
Definition args_option.hh:116
virtual void set_specified(const ArgsOptionSpecifiedness value)
Definition args_option.hh:159
ArgsOption(ArgsGroup *const, const std::string &long_name, const char short_name, const std::string &description)
ArgsGroup * group()
Definition args_option.hh:167
virtual const std::string forwardable_string() const PALUDIS_ATTRIBUTE((warn_unused_result))=0
virtual bool can_be_negated() const =0
const std::string & description() const
Definition args_option.hh:132
virtual bool specified() const
Definition args_option.hh:141
virtual bool explicitly_specified() const
Definition args_option.hh:151
char short_name() const
Definition args_option.hh:124
virtual const std::shared_ptr< Sequence< std::string > > forwardable_args() const PALUDIS_ATTRIBUTE((warn_unused_result))=0
Definition args_option.hh:565
EnumArgOptions(const std::string &, const char, const std::string &)
EnumArgOptions(const std::string &, const std::string &)
Definition args_option.hh:550
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
const std::string & default_arg() const
Definition args_option.hh:635
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
void set_argument(const std::string &arg)
void set_default_arg(const std::string &arg)
EnumArg(ArgsGroup *const group, const std::string &long_name, const char short_name, const std::string &description, const EnumArgOptions &opts, const std::string &default_arg)
const std::string & argument() const
Definition args_option.hh:614
bool can_be_negated() const override
Definition args_option.hh:500
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
IntegerArg(ArgsGroup *const, const std::string &long_name, const char short_name, const std::string &description)
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
void set_argument(const int arg)
Definition args_option.hh:518
bool can_be_negated() const override
int argument() const
Definition args_option.hh:513
Definition args_option.hh:238
StringArg(ArgsGroup *const, const std::string &long_name, const char short_name, const std::string &description, const bool can_be_negated=false)
const std::string & argument() const
Definition args_option.hh:264
void set_argument(const std::string &arg)
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
bool can_be_negated() const override
StringArg(ArgsGroup *const, const std::string &long_name, const char short_name, const std::string &description, ValidatorFunction validator, const bool can_be_negated=false)
Definition args_option.hh:395
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
void add_argument(const std::string &arg)
bool can_be_negated() const override
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
Definition args_option.hh:301
StringSetArgOptions(const std::string &, const std::string &)
StringSetArgOptions(const StringSetArgOptions &)
Definition args_option.hh:286
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
void add_argument(const std::string &arg)
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
bool can_be_negated() const override
Definition args_option.hh:209
const std::shared_ptr< Sequence< std::string > > forwardable_args() const override PALUDIS_ATTRIBUTE((warn_unused_result))
bool can_be_negated() const override
const std::string forwardable_string() const override PALUDIS_ATTRIBUTE((warn_unused_result))
SwitchArg(ArgsGroup *const group, const std::string &long_name, char short_name, const std::string &description, const bool can_be_negated)
#define PALUDIS_ATTRIBUTE(x)
Definition attributes.hh:53
#define PALUDIS_VISIBLE
Definition attributes.hh:59
Definition args_dumper.hh:39
Definition about_metadata-fwd.hh:24
Definition args_option.hh:533
NamedValue< n::short_name, char > short_name
Might be '\0', for none.
Definition args_option.hh:538