X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FRecord.h;h=87a49ee2f8448c2fc89481cb3fd4460acf5d53ca;hb=20072af3b0b22d90afbce769409f4ed822520366;hp=5f0e4c7fa679933e1eec81a36f91463847b2e947;hpb=7674b9d2970fc38358c5666fce57d84c5700c69e;p=oota-llvm.git diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h index 5f0e4c7fa67..87a49ee2f84 100644 --- a/utils/TableGen/Record.h +++ b/utils/TableGen/Record.h @@ -15,6 +15,7 @@ #ifndef RECORD_H #define RECORD_H +#include "llvm/Support/DataTypes.h" #include #include #include @@ -151,7 +152,7 @@ public: class BitsRecTy : public RecTy { unsigned Size; public: - BitsRecTy(unsigned Sz) : Size(Sz) {} + explicit BitsRecTy(unsigned Sz) : Size(Sz) {} unsigned getNumBits() const { return Size; } @@ -268,7 +269,7 @@ public: class ListRecTy : public RecTy { RecTy *Ty; public: - ListRecTy(RecTy *T) : Ty(T) {} + explicit ListRecTy(RecTy *T) : Ty(T) {} RecTy *getElementType() const { return Ty; } @@ -381,7 +382,7 @@ public: class RecordRecTy : public RecTy { Record *Rec; public: - RecordRecTy(Record *R) : Rec(R) {} + explicit RecordRecTy(Record *R) : Rec(R) {} Record *getRecord() const { return Rec; } @@ -509,7 +510,7 @@ public: class BitInit : public Init { bool Value; public: - BitInit(bool V) : Value(V) {} + explicit BitInit(bool V) : Value(V) {} bool getValue() const { return Value; } @@ -526,7 +527,7 @@ public: class BitsInit : public Init { std::vector Bits; public: - BitsInit(unsigned Size) : Bits(Size) {} + explicit BitsInit(unsigned Size) : Bits(Size) {} unsigned getNumBits() const { return Bits.size(); } @@ -565,11 +566,11 @@ public: /// IntInit - 7 - Represent an initalization by a literal integer value. /// class IntInit : public Init { - int Value; + int64_t Value; public: - IntInit(int V) : Value(V) {} + explicit IntInit(int64_t V) : Value(V) {} - int getValue() const { return Value; } + int64_t getValue() const { return Value; } virtual Init *convertInitializerTo(RecTy *Ty) { return Ty->convertValue(this); @@ -585,7 +586,7 @@ public: class StringInit : public Init { std::string Value; public: - StringInit(const std::string &V) : Value(V) {} + explicit StringInit(const std::string &V) : Value(V) {} const std::string &getValue() const { return Value; } @@ -601,7 +602,7 @@ public: class CodeInit : public Init { std::string Value; public: - CodeInit(const std::string &V) : Value(V) {} + explicit CodeInit(const std::string &V) : Value(V) {} const std::string getValue() const { return Value; } @@ -617,7 +618,7 @@ public: class ListInit : public Init { std::vector Values; public: - ListInit(std::vector &Vs) { + explicit ListInit(std::vector &Vs) { Values.swap(Vs); } @@ -693,7 +694,7 @@ public: class TypedInit : public Init { RecTy *Ty; public: - TypedInit(RecTy *T) : Ty(T) {} + explicit TypedInit(RecTy *T) : Ty(T) {} RecTy *getType() const { return Ty; } @@ -719,7 +720,8 @@ public: class VarInit : public TypedInit { std::string VarName; public: - VarInit(const std::string &VN, RecTy *T) : TypedInit(T), VarName(VN) {} + explicit VarInit(const std::string &VN, RecTy *T) + : TypedInit(T), VarName(VN) {} virtual Init *convertInitializerTo(RecTy *Ty) { return Ty->convertValue(this); @@ -807,7 +809,7 @@ public: class DefInit : public Init { Record *Def; public: - DefInit(Record *D) : Def(D) {} + explicit DefInit(Record *D) : Def(D) {} virtual Init *convertInitializerTo(RecTy *Ty) { return Ty->convertValue(this); @@ -965,7 +967,7 @@ class Record { std::vector SuperClasses; public: - Record(const std::string &N) : Name(N) {} + explicit Record(const std::string &N) : Name(N) {} ~Record() {} const std::string &getName() const { return Name; } @@ -1081,7 +1083,7 @@ public: /// 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 getValueAsListOfInts(const std::string &FieldName) const; + std::vector getValueAsListOfInts(const std::string &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 @@ -1096,10 +1098,10 @@ public: bool getValueAsBit(const std::string &FieldName) const; /// getValueAsInt - This method looks up the specified field and returns its - /// value as an int, throwing an exception if the field does not exist or if - /// the value is not the right type. + /// value as an int64_t, throwing an exception if the field does not exist or + /// if the value is not the right type. /// - int getValueAsInt(const std::string &FieldName) const; + int64_t getValueAsInt(const std::string &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 @@ -1174,6 +1176,24 @@ public: void dump() const; }; +/// LessRecord - Sorting predicate to sort record pointers by name. +/// +struct LessRecord { + bool operator()(const Record *Rec1, const Record *Rec2) const { + return Rec1->getName() < Rec2->getName(); + } +}; + +/// LessRecordFieldName - Sorting predicate to sort record pointers by their +/// name field. +/// +struct LessRecordFieldName { + bool operator()(const Record *Rec1, const Record *Rec2) const { + return Rec1->getValueAsString("Name") < Rec2->getValueAsString("Name"); + } +}; + + std::ostream &operator<<(std::ostream &OS, const RecordKeeper &RK); extern RecordKeeper Records;