51 template<Constra
intType CType>
55 std::vector< std::unique_ptr<BaseArgument> >
m_args;
66 template<
typename ... A>
74 for(
auto const & arg: other.
m_args) {
75 m_args.emplace_back(std::move(arg->clone()));
126 for(
const auto& arg:
m_args) {
127 arg->find_all_arguments(collector);
139 std::string
usage()
const override {
146 std::unique_ptr<BaseArgument>
clone() const &
override {
153 std::unique_ptr<BaseArgument>
clone() &&
override {
163 template<
typename Arg>
169 unsigned int count()
const override;
186 template<Constra
intType ACType>
200 mutable std::vector<const Argument*>
m_args;
211 template<
typename ... A>
244 const std::string&
name()
const {
253 const std::vector<const Argument*>&
args()
const {
266 template<
typename Arg>
276 std::unique_ptr<BaseArgument>
clone() const &
override {
277 return std::unique_ptr<BaseArgument>(
new ArgumentSet(*
this));
283 std::unique_ptr<BaseArgument>
clone() &&
override {
284 return std::unique_ptr<BaseArgument>(
new ArgumentSet(std::move(*
this)));
ArgumentConstraint & add(Arg &&arg)
Add an argument to the constraint.
1: Exactly one argument must be set
void check_valid() const override
See BaseArgument::set()
const std::vector< const Argument * > & args() const
Get the Arguments contained in this ArgumentSet.
Definition: ArgumentConstraint.hpp:253
ConstraintType
Enumeration of possible argument constraints.
Definition: ArgumentConstraint.hpp:36
const std::string & name() const
Get the name of this ArgumentSet.
Definition: ArgumentConstraint.hpp:244
n: All arguments must be set
void find_all_arguments(std::vector< const Argument * > &collector) const override
See BaseArgument::find_all_arguments()
Definition: ArgumentConstraint.hpp:125
virtual ~ArgumentConstraint()
ArgumentConstraint destructor.
Definition: ArgumentConstraint.hpp:87
std::vector< std::unique_ptr< BaseArgument > > m_args
Sub-arguments to check.
Definition: ArgumentConstraint.hpp:55
Base argument class, used both by actual Argument classes and constraints (ArgumentConstraint).
Definition: BaseArgument.hpp:40
Simple argument class.
Definition: Argument.hpp:48
void diagnose_args() const
Calls diagnose for all set child arguments.
std::unique_ptr< BaseArgument > clone()&&override
See BaseArgument::clone().
Definition: ArgumentConstraint.hpp:283
virtual ~ArgumentSet()
ArgumentSet destructor.
Definition: ArgumentConstraint.hpp:227
ArgumentConstraint & operator=(ArgumentConstraint other)
ArgumentConstraint assignment operator.
Definition: ArgumentConstraint.hpp:93
unsigned int count() const override
Returns the number of child arguments which are set.
ArgumentConstraint(const ArgumentConstraint &other)
ArgumentConstraint copy constructor.
Definition: ArgumentConstraint.hpp:72
std::vector< const Argument * > m_args
Cached arguments.
Definition: ArgumentConstraint.hpp:200
ArgumentConstraint(A &&...args)
Construct a ArgumentConstraint with the (possibly empty) given list of arguments. ...
std::string usage() const override
See BaseArgument::usage()
Definition: ArgumentConstraint.hpp:139
0: No arguments may be set
ArgumentSet & operator=(const ArgumentSet &)=default
ArgumentSet assignment.
std::string usageArgument(const Argument &arg) const
Returns a string for usage representation of sub-arguments.
[1,n]: At least one argument must be set
bool m_updateArgs
If true updates list of known arguments when retrieving them.
Definition: ArgumentConstraint.hpp:203
ArgumentSet & add(Arg &&arg)
Add an argument to the set.
Definition: ArgumentConstraint.hpp:267
Argument constraint class.
Definition: ArgumentConstraint.hpp:52
size_t size() const
Returns the number of contained sub-arguments.
Definition: ArgumentConstraint.hpp:118
ArgumentConstraint & operator+=(Argument &arg)
Appends the given argument to the constraint.
Definition: ArgumentConstraint.hpp:109
Simple set of arguments.
Definition: ArgumentConstraint.hpp:194
std::unique_ptr< BaseArgument > clone() const &override
See BaseArgument::clone().
Definition: ArgumentConstraint.hpp:146
std::string m_name
The name of this ArgumentSet.
Definition: ArgumentConstraint.hpp:197
std::unique_ptr< BaseArgument > clone()&&override
See BaseArgument::clone().
Definition: ArgumentConstraint.hpp:153
ArgumentSet(const std::string &name, A &&...args)
Create a new named ArgumentSet.
std::unique_ptr< BaseArgument > clone() const &override
See BaseArgument::clone().
Definition: ArgumentConstraint.hpp:276
std::string m_usageString
Stored usage string.
Definition: ArgumentConstraint.hpp:58