From 936dd9274aca2f2ccd0e10dafe83a22767475fa6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 19 Aug 2005 17:58:11 +0000 Subject: [PATCH] Add a setName method to Record. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22911 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/Record.cpp | 12 ++++++++++++ utils/TableGen/Record.h | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp index 16b902b562e..077476d07bc 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 b318157e0b0..ce69d6778a6 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 &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...