diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2009-10-14 17:57:32 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2009-10-14 17:57:32 +0000 |
commit | cd749a9c07f1de2fb8affde90537efa4bc3e7c54 (patch) | |
tree | b21f6de4e08b89bb7931806bab798fc2a5e3a686 /utils/TableGen/Record.h | |
parent | 72621d11de5b873f1695f391eb95f0b336c3d2d4 (diff) | |
download | FreeBSD-src-cd749a9c07f1de2fb8affde90537efa4bc3e7c54.zip FreeBSD-src-cd749a9c07f1de2fb8affde90537efa4bc3e7c54.tar.gz |
Update llvm to r84119.
Diffstat (limited to 'utils/TableGen/Record.h')
-rw-r--r-- | utils/TableGen/Record.h | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 11db910..1b33743 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -782,7 +782,7 @@ public: // Clone - Clone this operator, replacing arguments with the new list virtual OpInit *clone(std::vector<Init *> &Operands) = 0; - virtual int getNumOperands(void) const = 0; + virtual int getNumOperands() const = 0; virtual Init *getOperand(int i) = 0; // Fold - If possible, fold this to a simpler init. Return this if not @@ -820,7 +820,7 @@ public: return new UnOpInit(getOpcode(), *Operands.begin(), getType()); } - int getNumOperands(void) const { return 1; } + int getNumOperands() const { return 1; } Init *getOperand(int i) { assert(i == 0 && "Invalid operand id for unary operator"); return getOperand(); @@ -864,7 +864,7 @@ public: return new BinOpInit(getOpcode(), Operands[0], Operands[1], getType()); } - int getNumOperands(void) const { return 2; } + int getNumOperands() const { return 2; } Init *getOperand(int i) { assert((i == 0 || i == 1) && "Invalid operand id for binary operator"); if (i == 0) { @@ -909,7 +909,7 @@ public: getType()); } - int getNumOperands(void) const { return 3; } + int getNumOperands() const { return 3; } Init *getOperand(int i) { assert((i == 0 || i == 1 || i == 2) && "Invalid operand id for ternary operator"); @@ -1220,6 +1220,10 @@ inline raw_ostream &operator<<(raw_ostream &OS, const RecordVal &RV) { } class Record { + static unsigned LastID; + + // Unique record ID. + unsigned ID; std::string Name; SMLoc Loc; std::vector<std::string> TemplateArgs; @@ -1227,9 +1231,12 @@ class Record { std::vector<Record*> SuperClasses; public: - explicit Record(const std::string &N, SMLoc loc) : Name(N), Loc(loc) {} + explicit Record(const std::string &N, SMLoc loc) : + ID(LastID++), Name(N), Loc(loc) {} ~Record() {} + unsigned getID() const { return ID; } + const std::string &getName() const { return Name; } void setName(const std::string &Name); // Also updates RecordKeeper. @@ -1241,24 +1248,24 @@ public: const std::vector<RecordVal> &getValues() const { return Values; } const std::vector<Record*> &getSuperClasses() const { return SuperClasses; } - bool isTemplateArg(const std::string &Name) const { + bool isTemplateArg(StringRef Name) const { for (unsigned i = 0, e = TemplateArgs.size(); i != e; ++i) if (TemplateArgs[i] == Name) return true; return false; } - const RecordVal *getValue(const std::string &Name) const { + const RecordVal *getValue(StringRef Name) const { for (unsigned i = 0, e = Values.size(); i != e; ++i) if (Values[i].getName() == Name) return &Values[i]; return 0; } - RecordVal *getValue(const std::string &Name) { + RecordVal *getValue(StringRef Name) { for (unsigned i = 0, e = Values.size(); i != e; ++i) if (Values[i].getName() == Name) return &Values[i]; return 0; } - void addTemplateArg(const std::string &Name) { + void addTemplateArg(StringRef Name) { assert(!isTemplateArg(Name) && "Template arg already defined!"); TemplateArgs.push_back(Name); } @@ -1268,7 +1275,7 @@ public: Values.push_back(RV); } - void removeValue(const std::string &Name) { + void removeValue(StringRef Name) { assert(getValue(Name) && "Cannot remove an entry that does not exist!"); for (unsigned i = 0, e = Values.size(); i != e; ++i) if (Values[i].getName() == Name) { @@ -1285,7 +1292,7 @@ public: return false; } - bool isSubClassOf(const std::string &Name) const { + bool isSubClassOf(StringRef Name) const { for (unsigned i = 0, e = SuperClasses.size(); i != e; ++i) if (SuperClasses[i]->getName() == Name) return true; @@ -1316,67 +1323,67 @@ public: /// getValueInit - Return the initializer for a value with the specified name, /// or throw an exception if the field does not exist. /// - Init *getValueInit(const std::string &FieldName) const; + Init *getValueInit(StringRef FieldName) const; /// getValueAsString - This method looks up the specified field and returns /// its value as a string, throwing an exception if the field does not exist /// or if the value is not a string. /// - std::string getValueAsString(const std::string &FieldName) const; + std::string getValueAsString(StringRef FieldName) const; /// getValueAsBitsInit - This method looks up the specified field and returns /// its value as a BitsInit, throwing an exception if the field does not exist /// or if the value is not the right type. /// - BitsInit *getValueAsBitsInit(const std::string &FieldName) const; + BitsInit *getValueAsBitsInit(StringRef FieldName) const; /// getValueAsListInit - This method looks up the specified field and returns /// its value as a ListInit, throwing an exception if the field does not exist /// or if the value is not the right type. /// - ListInit *getValueAsListInit(const std::string &FieldName) const; + ListInit *getValueAsListInit(StringRef FieldName) const; /// getValueAsListOfDefs - This method looks up the specified field and /// returns its value as a vector of records, throwing an exception if the /// field does not exist or if the value is not the right type. /// - std::vector<Record*> getValueAsListOfDefs(const std::string &FieldName) const; + std::vector<Record*> getValueAsListOfDefs(StringRef FieldName) const; /// getValueAsListOfInts - This method looks up the specified field and returns /// its value as a vector of integers, throwing an exception if the field does /// not exist or if the value is not the right type. /// - std::vector<int64_t> getValueAsListOfInts(const std::string &FieldName) const; + std::vector<int64_t> getValueAsListOfInts(StringRef FieldName) const; /// getValueAsDef - This method looks up the specified field and returns its /// value as a Record, throwing an exception if the field does not exist or if /// the value is not the right type. /// - Record *getValueAsDef(const std::string &FieldName) const; + Record *getValueAsDef(StringRef FieldName) const; /// getValueAsBit - This method looks up the specified field and returns its /// value as a bit, throwing an exception if the field does not exist or if /// the value is not the right type. /// - bool getValueAsBit(const std::string &FieldName) const; + bool getValueAsBit(StringRef FieldName) const; /// getValueAsInt - This method looks up the specified field and returns its /// value as an int64_t, throwing an exception if the field does not exist or /// if the value is not the right type. /// - int64_t getValueAsInt(const std::string &FieldName) const; + int64_t getValueAsInt(StringRef FieldName) const; /// getValueAsDag - This method looks up the specified field and returns its /// value as an Dag, throwing an exception if the field does not exist or if /// the value is not the right type. /// - DagInit *getValueAsDag(const std::string &FieldName) const; + DagInit *getValueAsDag(StringRef FieldName) const; /// getValueAsCode - This method looks up the specified field and returns /// its value as the string data in a CodeInit, throwing an exception if the /// field does not exist or if the value is not a code object. /// - std::string getValueAsCode(const std::string &FieldName) const; + std::string getValueAsCode(StringRef FieldName) const; }; raw_ostream &operator<<(raw_ostream &OS, const Record &R); |