isSigned/isUnsigned/isInteger methods do not need to be virtual
authorChris Lattner <sabre@nondot.org>
Thu, 8 Jul 2004 17:29:36 +0000 (17:29 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 8 Jul 2004 17:29:36 +0000 (17:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14694 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Type.h

index dffe25858cd0b2935d955907ec3f99e84985bdcc..b558eb17598fcf7a8dbe75911b65017952669140 100644 (file)
@@ -94,8 +94,7 @@ private:
 
   const Type *getForwardedTypeInternal() const;
 protected:
-  /// ctor is protected, so only subclasses can create Type objects...
-  Type(const std::string& Name, TypeID id );
+  Type(const std::string& Name, TypeID id);
   virtual ~Type() {}
 
 
@@ -158,19 +157,24 @@ public:
   /// true for SByteTy, ShortTy, IntTy, LongTy.  Note that this is not true for
   /// Float and Double.
   ///
-  virtual bool isSigned() const { return 0; }
+  bool isSigned() const {
+    return ID == SByteTyID || ID == ShortTyID || 
+           ID == IntTyID || ID == LongTyID; 
+  }
   
   /// isUnsigned - Return whether a numeric type is unsigned.  This is not quite
   /// the complement of isSigned... nonnumeric types return false as they do
   /// with isSigned.  This returns true for UByteTy, UShortTy, UIntTy, and
   /// ULongTy
   /// 
-  virtual bool isUnsigned() const { return 0; }
+  bool isUnsigned() const {
+    return ID == UByteTyID || ID == UShortTyID || 
+           ID == UIntTyID || ID == ULongTyID; 
+  }
 
-  /// isInteger - Equilivent to isSigned() || isUnsigned(), but with only a
-  /// single virtual function invocation.
+  /// isInteger - Equilivant to isSigned() || isUnsigned()
   ///
-  virtual bool isInteger() const { return 0; }
+  bool isInteger() const { return ID >= UByteTyID && ID <= LongTyID; }
 
   /// isIntegral - Returns true if this is an integral type, which is either
   /// BoolTy or one of the Integer types.