Add a setName method to Record.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22911 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-08-19 17:58:11 +00:00
parent 0e384b66a7
commit 936dd9274a
2 changed files with 26 additions and 0 deletions

View File

@ -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.

View File

@ -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...