Implement operator<< in terms of basic types rather than [u]int*_t, which is better...
authorOwen Anderson <resistor@mac.com>
Thu, 21 Aug 2008 06:20:47 +0000 (06:20 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 21 Aug 2008 06:20:47 +0000 (06:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55114 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/raw_ostream.h

index 7e33cc78b18dd521e6b840b49a6030edfb01bf37..6ea5930d646b0f9edc528806e9018fb68e93eefc 100644 (file)
@@ -77,7 +77,7 @@ public:
     return write(Str.data(), Str.length());
   }
   
-  raw_ostream &operator<<(uint64_t N) {
+  raw_ostream &operator<<(unsigned long N) {
     // Zero is a special case.
     if (N == 0)
       return *this << '0';
@@ -93,7 +93,7 @@ public:
     return write(CurPtr, EndPtr-CurPtr);
   }
   
-  raw_ostream &operator<<(int64_t N) {
+  raw_ostream &operator<<(long N) {
     if (N <  0) {
       if (OutBufCur >= OutBufEnd)
         flush_impl();
@@ -102,15 +102,43 @@ public:
       N = -N;
     }
     
-    return this->operator<<(static_cast<uint64_t>(N));
+    return this->operator<<(static_cast<unsigned long>(N));
   }
   
-  raw_ostream &operator<<(uint32_t N) {
-    return this->operator<<(static_cast<uint64_t>(N));
+  raw_ostream &operator<<(unsigned long long N) {
+    // Zero is a special case.
+    if (N == 0)
+      return *this << '0';
+    
+    char NumberBuffer[20];
+    char *EndPtr = NumberBuffer+sizeof(NumberBuffer);
+    char *CurPtr = EndPtr;
+    
+    while (N) {
+      *--CurPtr = '0' + char(N % 10);
+      N /= 10;
+    }
+    return write(CurPtr, EndPtr-CurPtr);
+  }
+  
+  raw_ostream &operator<<(long long N) {
+    if (N <  0) {
+      if (OutBufCur >= OutBufEnd)
+        flush_impl();
+      *OutBufCur++ = '-';
+      
+      N = -N;
+    }
+    
+    return this->operator<<(static_cast<unsigned long long>(N));
+  }
+  
+  raw_ostream &operator<<(unsigned int N) {
+    return this->operator<<(static_cast<unsigned long>(N));
   }
   
-  raw_ostream &operator<<(int32_t N) {
-    return this->operator<<(static_cast<int64_t>(N));
+  raw_ostream &operator<<(int N) {
+    return this->operator<<(static_cast<long>(N));
   }
 
   raw_ostream &operator<<(double N) {