diff options
author | David Greene <greened@obbligato.org> | 2011-10-19 13:02:42 +0000 |
---|---|---|
committer | David Greene <greened@obbligato.org> | 2011-10-19 13:02:42 +0000 |
commit | e22b321d2276b634519165b101b02d92c2fcf5c7 (patch) | |
tree | d54a935a96598142d0b8148c175dac984007970b /include | |
parent | 917924d9912df76ba2e639c8c5b00cdcac91a16e (diff) | |
download | llvm-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.h | 14 |
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!"); |