Skip to content

Commit e28d2b0

Browse files
committed
Update variable names to reflect there is no Toplevelcommand.
1 parent c1cddc9 commit e28d2b0

File tree

8 files changed

+123
-163
lines changed

8 files changed

+123
-163
lines changed

llvm/examples/OptSubcommand/Opts.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
include "llvm/Option/OptParser.td"
22

3-
def sc_foo : Subcommand<"foo", "HelpText for Subcommand foo.">;
3+
def sc_foo : SubCommand<"foo", "HelpText for SubCommand foo.">;
44

5-
def sc_bar : Subcommand<"bar", "HelpText for Subcommand bar.",
5+
def sc_bar : SubCommand<"bar", "HelpText for SubCommand bar.",
66
"OptSubcommand bar <options>">;
77

88
def help : Flag<["--"], "help">,

llvm/examples/OptSubcommand/llvm-hello-sub.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ enum ID {
2727
#include "Opts.inc"
2828
#undef OPTTABLE_PREFIXES_TABLE_CODE
2929

30-
#define OPTTABLE_COMMAND_IDS_TABLE_CODE
30+
#define OPTTABLE_SUBCOMMAND_IDS_TABLE_CODE
3131
#include "Opts.inc"
32-
#undef OPTTABLE_COMMAND_IDS_TABLE_CODE
32+
#undef OPTTABLE_SUBCOMMAND_IDS_TABLE_CODE
3333

34-
#define OPTTABLE_COMMANDS_CODE
34+
#define OPTTABLE_SUBCOMMANDS_CODE
3535
#include "Opts.inc"
36-
#undef OPTTABLE_COMMANDS_CODE
36+
#undef OPTTABLE_SUBCOMMANDS_CODE
3737

3838
static constexpr OptTable::Info InfoTable[] = {
3939
#define OPTION(...) LLVM_CONSTRUCT_OPT_INFO(__VA_ARGS__),
@@ -45,8 +45,8 @@ class HelloSubOptTable : public GenericOptTable {
4545
public:
4646
HelloSubOptTable()
4747
: GenericOptTable(OptionStrTable, OptionPrefixesTable, InfoTable,
48-
/*IgnoreCase=*/false, OptionCommands,
49-
OptionCommandIDsTable) {}
48+
/*IgnoreCase=*/false, OptionSubCommands,
49+
OptionSubCommandIDsTable) {}
5050
};
5151
} // namespace
5252

@@ -79,7 +79,7 @@ int main(int argc, char **argv) {
7979
MissingArgCount);
8080

8181
StringRef Subcommand = Args.getSubcommand(
82-
T.getCommands(), HandleMultipleSubcommands, HandleOtherPositionals);
82+
T.getSubCommands(), HandleMultipleSubcommands, HandleOtherPositionals);
8383
// Handle help. When help options is found, ignore all other options and exit
8484
// after printing help.
8585

llvm/include/llvm/Option/ArgList.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ class ArgList {
293293
/// this returns an empty StringRef. If multiple subcommands are found, the
294294
/// first one is returned.
295295
StringRef getSubcommand(
296-
ArrayRef<OptTable::Command> Commands,
296+
ArrayRef<OptTable::SubCommand> AllSubCommands,
297297
std::function<void(ArrayRef<StringRef>)> HandleMultipleSubcommands,
298298
std::function<void(ArrayRef<StringRef>)> HandleOtherPositionals) const;
299299

llvm/include/llvm/Option/OptParser.td

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,15 @@ class HelpTextVariant<list<OptionVisibility> visibilities, string text> {
9898
string Text = text;
9999
}
100100

101-
// Base class for TopLevelCommand and Subcommands.
102-
class Command<string name> { string Name = name; }
103-
104101
// Class definition for positional subcommands.
105-
class Subcommand<string name, string helpText, string usage = "">
106-
: Command<name> {
102+
class SubCommand<string name, string helpText, string usage = ""> {
103+
string Name = name;
107104
string HelpText = helpText;
108105
string Usage = usage;
109106
}
110107

111108
class Option<list<string> prefixes, string name, OptionKind kind,
112-
list<Command> commandGroup = []> {
109+
list<SubCommand> subcommands = []> {
113110
string EnumName = ?; // Uses the def name if undefined.
114111
list<string> Prefixes = prefixes;
115112
string Name = name;
@@ -140,33 +137,34 @@ class Option<list<string> prefixes, string name, OptionKind kind,
140137
code ValueMerger = "mergeForwardValue";
141138
code ValueExtractor = "extractForwardValue";
142139
list<code> NormalizedValues = ?;
143-
list<Command> CommandGroup = commandGroup;
140+
list<SubCommand> SubCommands = subcommands;
144141
}
145142

146143
// Helpers for defining options.
147144

148-
class Flag<list<string> prefixes, string name, list<Command> commandGroup = []>
149-
: Option<prefixes, name, KIND_FLAG, commandGroup>;
145+
class Flag<list<string> prefixes, string name,
146+
list<SubCommand> subcommands = []>
147+
: Option<prefixes, name, KIND_FLAG, subcommands>;
150148
class Joined<list<string> prefixes, string name,
151-
list<Command> commandGroup = []>
152-
: Option<prefixes, name, KIND_JOINED, commandGroup>;
149+
list<SubCommand> subcommands = []>
150+
: Option<prefixes, name, KIND_JOINED, subcommands>;
153151
class Separate<list<string> prefixes, string name,
154-
list<Command> commandGroup = []>
155-
: Option<prefixes, name, KIND_SEPARATE, commandGroup>;
152+
list<SubCommand> subcommands = []>
153+
: Option<prefixes, name, KIND_SEPARATE, subcommands>;
156154
class CommaJoined<list<string> prefixes, string name,
157-
list<Command> commandGroup = []>
158-
: Option<prefixes, name, KIND_COMMAJOINED, commandGroup>;
155+
list<SubCommand> subcommands = []>
156+
: Option<prefixes, name, KIND_COMMAJOINED, subcommands>;
159157
class MultiArg<list<string> prefixes, string name, int numargs,
160-
list<Command> commandGroup = []>
161-
: Option<prefixes, name, KIND_MULTIARG, commandGroup> {
158+
list<SubCommand> subcommands = []>
159+
: Option<prefixes, name, KIND_MULTIARG, subcommands> {
162160
int NumArgs = numargs;
163161
}
164162
class JoinedOrSeparate<list<string> prefixes, string name,
165-
list<Command> commandGroup = []>
166-
: Option<prefixes, name, KIND_JOINED_OR_SEPARATE, commandGroup>;
163+
list<SubCommand> subcommands = []>
164+
: Option<prefixes, name, KIND_JOINED_OR_SEPARATE, subcommands>;
167165
class JoinedAndSeparate<list<string> prefixes, string name,
168-
list<Command> commandGroup = []>
169-
: Option<prefixes, name, KIND_JOINED_AND_SEPARATE, commandGroup>;
166+
list<SubCommand> subcommands = []>
167+
: Option<prefixes, name, KIND_JOINED_AND_SEPARATE, subcommands>;
170168

171169
// Mix-ins for adding optional attributes.
172170

llvm/include/llvm/Option/OptTable.h

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ class Visibility {
4545
operator unsigned() const { return Mask; }
4646
};
4747

48-
inline constexpr StringRef TopLevelCommandName = "TopLevelCommand";
49-
5048
/// Provide access to the Option info table.
5149
///
5250
/// The OptTable class provides a layer of indirection which allows Option
@@ -57,7 +55,7 @@ inline constexpr StringRef TopLevelCommandName = "TopLevelCommand";
5755
class LLVM_ABI OptTable {
5856
public:
5957
/// Represents a subcommand and its options in the option table.
60-
struct Command {
58+
struct SubCommand {
6159
const char *Name;
6260
const char *HelpText;
6361
const char *Usage;
@@ -107,16 +105,17 @@ class LLVM_ABI OptTable {
107105

108106
bool hasCommands() const { return CommandIDsOffset != 0; }
109107

110-
unsigned getNumCommandIDs(ArrayRef<unsigned> CommandIDsTable) const {
108+
unsigned getNumCommandIDs(ArrayRef<unsigned> SubCommandIDsTable) const {
111109
// We embed the number of command IDs in the value of the first offset.
112-
return CommandIDsTable[CommandIDsOffset];
110+
return SubCommandIDsTable[CommandIDsOffset];
113111
}
114112

115-
ArrayRef<unsigned> getCommandIDs(ArrayRef<unsigned> CommandIDsTable) const {
116-
return hasCommands()
117-
? CommandIDsTable.slice(CommandIDsOffset + 1,
118-
getNumCommandIDs(CommandIDsTable))
119-
: ArrayRef<unsigned>();
113+
ArrayRef<unsigned>
114+
getCommandIDs(ArrayRef<unsigned> SubCommandIDsTable) const {
115+
return hasCommands() ? SubCommandIDsTable.slice(
116+
CommandIDsOffset + 1,
117+
getNumCommandIDs(SubCommandIDsTable))
118+
: ArrayRef<unsigned>();
120119
}
121120

122121
void appendPrefixes(const StringTable &StrTable,
@@ -161,10 +160,10 @@ class LLVM_ABI OptTable {
161160
bool IgnoreCase;
162161

163162
/// The command information table.
164-
ArrayRef<Command> Commands;
163+
ArrayRef<SubCommand> SubCommands;
165164

166165
/// The command IDs table.
167-
ArrayRef<unsigned> CommandIDsTable;
166+
ArrayRef<unsigned> SubCommandIDsTable;
168167

169168
bool GroupedShortOptions = false;
170169
bool DashDashParsing = false;
@@ -201,8 +200,8 @@ class LLVM_ABI OptTable {
201200
OptTable(const StringTable &StrTable,
202201
ArrayRef<StringTable::Offset> PrefixesTable,
203202
ArrayRef<Info> OptionInfos, bool IgnoreCase = false,
204-
ArrayRef<Command> Commands = {},
205-
ArrayRef<unsigned> CommandIDsTable = {});
203+
ArrayRef<SubCommand> SubCommands = {},
204+
ArrayRef<unsigned> SubCommandIDsTable = {});
206205

207206
/// Build (or rebuild) the PrefixChars member.
208207
void buildPrefixChars();
@@ -213,7 +212,7 @@ class LLVM_ABI OptTable {
213212
/// Return the string table used for option names.
214213
const StringTable &getStrTable() const { return *StrTable; }
215214

216-
const ArrayRef<Command> getCommands() const { return Commands; }
215+
const ArrayRef<SubCommand> getSubCommands() const { return SubCommands; }
217216

218217
/// Return the prefixes table used for option names.
219218
ArrayRef<StringTable::Offset> getPrefixesTable() const {
@@ -386,7 +385,6 @@ class LLVM_ABI OptTable {
386385
private:
387386
std::unique_ptr<Arg>
388387
internalParseOneArg(const ArgList &Args, unsigned &Index,
389-
const Command *ActiveCommand,
390388
std::function<bool(const Option &)> ExcludeOption) const;
391389

392390
public:
@@ -468,8 +466,8 @@ class GenericOptTable : public OptTable {
468466
LLVM_ABI GenericOptTable(const StringTable &StrTable,
469467
ArrayRef<StringTable::Offset> PrefixesTable,
470468
ArrayRef<Info> OptionInfos, bool IgnoreCase = false,
471-
ArrayRef<Command> Commands = {},
472-
ArrayRef<unsigned> CommandIDsTable = {});
469+
ArrayRef<SubCommand> Commands = {},
470+
ArrayRef<unsigned> SubCommandIDsTable = {});
473471
};
474472

475473
class PrecomputedOptTable : public OptTable {
@@ -478,10 +476,11 @@ class PrecomputedOptTable : public OptTable {
478476
ArrayRef<StringTable::Offset> PrefixesTable,
479477
ArrayRef<Info> OptionInfos,
480478
ArrayRef<StringTable::Offset> PrefixesUnionOffsets,
481-
bool IgnoreCase = false, ArrayRef<Command> Commands = {},
482-
ArrayRef<unsigned> CommandIDsTable = {})
483-
: OptTable(StrTable, PrefixesTable, OptionInfos, IgnoreCase, Commands,
484-
CommandIDsTable) {
479+
bool IgnoreCase = false,
480+
ArrayRef<SubCommand> SubCommands = {},
481+
ArrayRef<unsigned> SubCommandIDsTable = {})
482+
: OptTable(StrTable, PrefixesTable, OptionInfos, IgnoreCase, SubCommands,
483+
SubCommandIDsTable) {
485484
for (auto PrefixOffset : PrefixesUnionOffsets)
486485
PrefixesUnion.push_back(StrTable[PrefixOffset]);
487486
buildPrefixChars();

llvm/lib/Option/ArgList.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ LLVM_DUMP_METHOD void ArgList::dump() const { print(dbgs()); }
206206
#endif
207207

208208
StringRef ArgList::getSubcommand(
209-
ArrayRef<OptTable::Command> Commands,
209+
ArrayRef<OptTable::SubCommand> AllSubCommands,
210210
std::function<void(ArrayRef<StringRef>)> HandleMultipleSubcommands,
211211
std::function<void(ArrayRef<StringRef>)> HandleOtherPositionals) const {
212212

@@ -217,9 +217,7 @@ StringRef ArgList::getSubcommand(
217217
continue;
218218

219219
size_t OldSize = SubCommands.size();
220-
for (const OptTable::Command &CMD : Commands) {
221-
// if (StringRef(CMD.Name) == opt::TopLevelCommandName)
222-
// continue;
220+
for (const OptTable::SubCommand &CMD : AllSubCommands) {
223221
if (StringRef(CMD.Name) == A->getValue())
224222
SubCommands.push_back(A->getValue());
225223
}

0 commit comments

Comments
 (0)