summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2011-10-19 13:02:42 +0000
committerDavid Greene <greened@obbligato.org>2011-10-19 13:02:42 +0000
commite22b321d2276b634519165b101b02d92c2fcf5c7 (patch)
treed54a935a96598142d0b8148c175dac984007970b /include
parent917924d9912df76ba2e639c8c5b00cdcac91a16e (diff)
downloadllvm-e22b321d2276b634519165b101b02d92c2fcf5c7.tar.gz
llvm-e22b321d2276b634519165b101b02d92c2fcf5c7.tar.bz2
llvm-e22b321d2276b634519165b101b02d92c2fcf5c7.tar.xz
Make Template Arg Names Inits
Allow template arg names to be Inits. This is further work to implement paste as it allows template names to participate in paste operations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142500 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/TableGen/Record.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/TableGen/Record.h b/include/llvm/TableGen/Record.h
index 905126b2b3..0c9c909972 100644
--- a/include/llvm/TableGen/Record.h
+++ b/include/llvm/TableGen/Record.h
@@ -1385,7 +1385,7 @@ class Record {
unsigned ID;
Init *Name;
SMLoc Loc;
- std::vector<std::string> TemplateArgs;
+ std::vector<Init *> TemplateArgs;
std::vector<RecordVal> Values;
std::vector<Record*> SuperClasses;
@@ -1425,17 +1425,20 @@ public:
/// get the corresponding DefInit.
DefInit *getDefInit();
- const std::vector<std::string> &getTemplateArgs() const {
+ const std::vector<Init *> &getTemplateArgs() const {
return TemplateArgs;
}
const std::vector<RecordVal> &getValues() const { return Values; }
const std::vector<Record*> &getSuperClasses() const { return SuperClasses; }
- bool isTemplateArg(StringRef Name) const {
+ bool isTemplateArg(Init *Name) const {
for (unsigned i = 0, e = TemplateArgs.size(); i != e; ++i)
if (TemplateArgs[i] == Name) return true;
return false;
}
+ bool isTemplateArg(StringRef Name) const {
+ return isTemplateArg(StringInit::get(Name.str()));
+ }
const RecordVal *getValue(StringRef Name) const {
for (unsigned i = 0, e = Values.size(); i != e; ++i)
@@ -1451,10 +1454,13 @@ public:
const RecordVal *getValue(Init *Name) const;
RecordVal *getValue(Init *Name);
- void addTemplateArg(StringRef Name) {
+ void addTemplateArg(Init *Name) {
assert(!isTemplateArg(Name) && "Template arg already defined!");
TemplateArgs.push_back(Name);
}
+ void addTemplateArg(StringRef Name) {
+ addTemplateArg(StringInit::get(Name.str()));
+ }
void addValue(const RecordVal &RV) {
assert(getValue(RV.getName()) == 0 && "Value already added!");