give smallstring some methods to do 'itoa'.
authorChris Lattner <sabre@nondot.org>
Wed, 16 Apr 2008 04:05:02 +0000 (04:05 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 16 Apr 2008 04:05:02 +0000 (04:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49765 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/SmallString.h

index c4c2a45433887434d8deec080fe28c9d1634256a..afcaafb293cf4a401fc09cbf830b97b4e58dcdb2 100644 (file)
@@ -53,6 +53,47 @@ public:
     this->push_back(C);
     return *this;
   }
+
+  SmallString &append_uint_32(uint32_t N) {
+    char Buffer[20];
+    char *BufPtr = Buffer+19;
+    
+    if (N == 0) *--BufPtr = '0';  // Handle special case.
+    
+    while (N) {
+      *--BufPtr = '0' + char(N % 10);
+      N /= 10;
+    }
+    this->append(BufPtr, Buffer+20);
+    return *this;
+  }
+  
+  SmallString &append_uint(uint64_t N) {
+    if (N == uint32_t(N))
+      return append_uint_32(uint32_t(N));
+    
+    char Buffer[40];
+    char *BufPtr = Buffer+39;
+    
+    if (N == 0) *--BufPtr = '0';  // Handle special case...
+    
+    while (N) {
+      *--BufPtr = '0' + char(N % 10);
+      N /= 10;
+    }
+
+    this->append(BufPtr, Buffer+40);
+    return *this;
+  }
+  
+  SmallString &append_sint(int64_t N) {
+    // TODO, wrong for minint64.
+    if (N < 0) {
+      this->push_back('-');
+      N = -N;
+    }
+    return append_uint(N);
+  }
   
 };