[Options] Store the option ID in OptTable::Info.

llvm-svn: 164644
This commit is contained in:
Michael J. Spencer 2012-09-25 23:12:48 +00:00
parent 15a4bea41e
commit 9d1221a281
6 changed files with 9 additions and 11 deletions

View File

@ -34,6 +34,7 @@ namespace driver {
const char *Name;
const char *HelpText;
const char *MetaVar;
unsigned ID;
unsigned char Kind;
unsigned char Param;
unsigned short Flags;

View File

@ -71,9 +71,6 @@ namespace options {
private:
const OptTable::Info *Info;
/// The option ID.
OptSpecifier ID;
/// Group this option is a member of, if any.
const Option *Group;
@ -81,11 +78,11 @@ namespace options {
const Option *Alias;
public:
Option(const OptTable::Info *Info, OptSpecifier ID,
Option(const OptTable::Info *Info,
const Option *Group, const Option *Alias);
~Option();
unsigned getID() const { return ID.getID(); }
unsigned getID() const { return Info->ID; }
OptionClass getKind() const { return OptionClass(Info->Kind); }
StringRef getName() const { return Info->Name; }
const Option *getGroup() const { return Group; }

View File

@ -18,7 +18,7 @@ using namespace clang::driver::cc1asoptions;
static const OptTable::Info CC1AsInfoTable[] = {
#define OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
HELPTEXT, METAVAR) \
{ NAME, HELPTEXT, METAVAR, Option::KIND##Class, PARAM, FLAGS, \
{ NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, FLAGS, \
OPT_##GROUP, OPT_##ALIAS },
#include "clang/Driver/CC1AsOptions.inc"
};

View File

@ -17,7 +17,7 @@ using namespace clang::driver::options;
static const OptTable::Info InfoTable[] = {
#define OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
HELPTEXT, METAVAR) \
{ NAME, HELPTEXT, METAVAR, Option::KIND##Class, PARAM, FLAGS, \
{ NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, FLAGS, \
OPT_##GROUP, OPT_##ALIAS },
#include "clang/Driver/Options.inc"
};

View File

@ -138,7 +138,7 @@ Option *OptTable::CreateOption(unsigned id) const {
const Option *Group = getOption(info.GroupID);
const Option *Alias = getOption(info.AliasID);
Option *Opt = new Option(&info, id, Group, Alias);
Option *Opt = new Option(&info, Group, Alias);
return Opt;
}

View File

@ -17,9 +17,9 @@
#include <algorithm>
using namespace clang::driver;
Option::Option(const OptTable::Info *info, OptSpecifier _ID,
Option::Option(const OptTable::Info *info,
const Option *_Group, const Option *_Alias)
: Info(info), ID(_ID.getID()), Group(_Group), Alias(_Alias) {
: Info(info), Group(_Group), Alias(_Alias) {
// Multi-level aliases are not supported, and alias options cannot
// have groups. This just simplifies option tracking, it is not an
@ -72,7 +72,7 @@ bool Option::matches(OptSpecifier Opt) const {
return Alias->matches(Opt);
// Check exact match.
if (ID == Opt)
if (getID() == Opt.getID())
return true;
if (Group)