summaryrefslogtreecommitdiff
path: root/include/llvm/ADT/SmallString.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-04-16 04:05:02 +0000
committerChris Lattner <sabre@nondot.org>2008-04-16 04:05:02 +0000
commitc0814dc606c8397207534bcd4adbc5525a01e83a (patch)
tree89f3795054afa125f9224544352760d9c8137dc9 /include/llvm/ADT/SmallString.h
parent171c11ec93d74c71f7e4f8bfb9c9cd5971214b53 (diff)
downloadllvm-c0814dc606c8397207534bcd4adbc5525a01e83a.tar.gz
llvm-c0814dc606c8397207534bcd4adbc5525a01e83a.tar.bz2
llvm-c0814dc606c8397207534bcd4adbc5525a01e83a.tar.xz
give smallstring some methods to do 'itoa'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49765 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/SmallString.h')
-rw-r--r--include/llvm/ADT/SmallString.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/include/llvm/ADT/SmallString.h b/include/llvm/ADT/SmallString.h
index c4c2a45433..afcaafb293 100644
--- a/include/llvm/ADT/SmallString.h
+++ b/include/llvm/ADT/SmallString.h
@@ -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);
+ }
};