diff options
author | Chris Lattner <sabre@nondot.org> | 2005-08-19 17:58:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-08-19 17:58:11 +0000 |
commit | 936dd9274aca2f2ccd0e10dafe83a22767475fa6 (patch) | |
tree | 681002d2e0a61b6edcae67c9ea1d90c3aeb2f32e /utils/TableGen | |
parent | 0e384b66a781fc0ff005f475a7ab151afa054fb0 (diff) | |
download | llvm-936dd9274aca2f2ccd0e10dafe83a22767475fa6.tar.gz llvm-936dd9274aca2f2ccd0e10dafe83a22767475fa6.tar.bz2 llvm-936dd9274aca2f2ccd0e10dafe83a22767475fa6.tar.xz |
Add a setName method to Record.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22911 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen')
-rw-r--r-- | utils/TableGen/Record.cpp | 12 | ||||
-rw-r--r-- | utils/TableGen/Record.h | 14 |
2 files changed, 26 insertions, 0 deletions
diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 16b902b562..077476d07b 100644 --- a/utils/TableGen/Record.cpp +++ b/utils/TableGen/Record.cpp @@ -589,6 +589,18 @@ void RecordVal::print(std::ostream &OS, bool PrintSem) const { if (PrintSem) OS << ";\n"; } +void Record::setName(const std::string &Name) { + if (Records.getDef(getName()) == this) { + Records.removeDef(getName()); + this->Name = Name; + Records.addDef(this); + } else { + Records.removeClass(getName()); + this->Name = Name; + Records.addClass(this); + } +} + /// resolveReferencesTo - If anything in this record refers to RV, replace the /// reference to RV with the RHS of RV. If RV is null, we resolve all possible /// references. diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index b318157e0b..ce69d6778a 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -898,6 +898,7 @@ public: ~Record() {} const std::string &getName() const { return Name; } + void setName(const std::string &Name); // Also updates RecordKeeper. const std::vector<std::string> &getTemplateArgs() const { return TemplateArgs; } @@ -1058,6 +1059,19 @@ public: Defs.insert(std::make_pair(R->getName(), R)); } + /// removeClass - Remove, but do not delete, the specified record. + /// + void removeClass(const std::string &Name) { + assert(Classes.count(Name) && "Class does not exist!"); + Classes.erase(Name); + } + /// removeDef - Remove, but do not delete, the specified record. + /// + void removeDef(const std::string &Name) { + assert(Defs.count(Name) && "Def does not exist!"); + Defs.erase(Name); + } + //===--------------------------------------------------------------------===// // High-level helper methods, useful for tablegen backends... |