summaryrefslogtreecommitdiff
path: root/include/llvm/Tools/StringExtras.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Tools/StringExtras.h')
-rw-r--r--include/llvm/Tools/StringExtras.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/include/llvm/Tools/StringExtras.h b/include/llvm/Tools/StringExtras.h
new file mode 100644
index 0000000000..31dedb4248
--- /dev/null
+++ b/include/llvm/Tools/StringExtras.h
@@ -0,0 +1,63 @@
+//===-- StringExtras.h - Useful string functions -----------------*- C++ -*--=//
+//
+// This file contains some functions that are useful when dealing with strings.
+// No library is required when using these functinons.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TOOLS_STRING_EXTRAS_H
+#define LLVM_TOOLS_STRING_EXTRAS_H
+
+#include <string>
+#include "llvm/Tools/DataTypes.h"
+
+static inline string utostr(uint64_t X, bool isNeg = false) {
+ char Buffer[40];
+ char *BufPtr = Buffer+39;
+
+ *BufPtr = 0; // Null terminate buffer...
+ if (X == 0) *--BufPtr = '0'; // Handle special case...
+
+ while (X) {
+ *--BufPtr = '0' + (X % 10);
+ X /= 10;
+ }
+
+ if (isNeg) *--BufPtr = '-'; // Add negative sign...
+
+ return string(BufPtr);
+}
+
+static inline string itostr(int64_t X) {
+ if (X < 0)
+ return utostr((uint64_t)-X, true);
+ else
+ return utostr((uint64_t)X);
+}
+
+
+static inline string utostr(unsigned X, bool isNeg = false) {
+ char Buffer[20];
+ char *BufPtr = Buffer+19;
+
+ *BufPtr = 0; // Null terminate buffer...
+ if (X == 0) *--BufPtr = '0'; // Handle special case...
+
+ while (X) {
+ *--BufPtr = '0' + (X % 10);
+ X /= 10;
+ }
+
+ if (isNeg) *--BufPtr = '-'; // Add negative sign...
+
+ return string(BufPtr);
+}
+
+static inline string itostr(int X) {
+ if (X < 0)
+ return utostr((unsigned)-X, true);
+ else
+ return utostr((unsigned)X);
+}
+
+#endif