/// argument.
///
/// May issue a missing argument error.
- virtual Arg *accept(ArgList &Args, unsigned Index) const = 0;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const = 0;
void dump() const;
public:
OptionGroup(const char *Name, const OptionGroup *Group);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::GroupClass;
public:
InputOption();
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::InputClass;
public:
UnknownOption();
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::UnknownClass;
public:
FlagOption(const char *Name, const OptionGroup *Group, const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::FlagClass;
JoinedOption(const char *Name, const OptionGroup *Group,
const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::JoinedClass;
SeparateOption(const char *Name, const OptionGroup *Group,
const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::SeparateClass;
CommaJoinedOption(const char *Name, const OptionGroup *Group,
const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::CommaJoinedClass;
static bool classof(const CommaJoinedOption *) { return true; }
};
+ // FIXME: Fold MultiArgOption into SeparateOption?
+
/// MultiArgOption - An option which takes multiple arguments (these
/// are always separate arguments).
class MultiArgOption : public Option {
unsigned getNumArgs() const { return NumArgs; }
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::MultiArgClass;
JoinedOrSeparateOption(const char *Name, const OptionGroup *Group,
const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::JoinedOrSeparateClass;
JoinedAndSeparateOption(const char *Name, const OptionGroup *Group,
const Option *Alias);
- virtual Arg *accept(ArgList &Args, unsigned Index) const;
+ virtual Arg *accept(const ArgList &Args, unsigned &Index) const;
static bool classof(const Option *O) {
return O->getKind() == Option::JoinedAndSeparateClass;
: Option(Option::GroupClass, Name, Group, 0) {
}
-Arg *OptionGroup::accept(ArgList &Args, unsigned Index) const {
+Arg *OptionGroup::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::InputClass, "<input>", 0, 0) {
}
-Arg *InputOption::accept(ArgList &Args, unsigned Index) const {
+Arg *InputOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::UnknownClass, "<unknown>", 0, 0) {
}
-Arg *UnknownOption::accept(ArgList &Args, unsigned Index) const {
+Arg *UnknownOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::FlagClass, Name, Group, Alias) {
}
-Arg *FlagOption::accept(ArgList &Args, unsigned Index) const {
+Arg *FlagOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::JoinedClass, Name, Group, Alias) {
}
-Arg *JoinedOption::accept(ArgList &Args, unsigned Index) const {
+Arg *JoinedOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::CommaJoinedClass, Name, Group, Alias) {
}
-Arg *CommaJoinedOption::accept(ArgList &Args, unsigned Index) const {
+Arg *CommaJoinedOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::SeparateClass, Name, Group, Alias) {
}
-Arg *SeparateOption::accept(ArgList &Args, unsigned Index) const {
+Arg *SeparateOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::MultiArgClass, Name, Group, Alias), NumArgs(_NumArgs) {
}
-Arg *MultiArgOption::accept(ArgList &Args, unsigned Index) const {
+Arg *MultiArgOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::JoinedOrSeparateClass, Name, Group, Alias) {
}
-Arg *JoinedOrSeparateOption::accept(ArgList &Args, unsigned Index) const {
+Arg *JoinedOrSeparateOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}
: Option(Option::JoinedAndSeparateClass, Name, Group, Alias) {
}
-Arg *JoinedAndSeparateOption::accept(ArgList &Args, unsigned Index) const {
+Arg *JoinedAndSeparateOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "FIXME");
return 0;
}