Added LLVM notice.
[oota-llvm.git] / include / llvm / ADT / StringExtras.h
index 46e2c5aaf0b6dd71768d2a0c6a02a61ff4710a53..0ca6609ff45b47ed07402221d18eae4c8d11c1ae 100644 (file)
@@ -1,16 +1,41 @@
-//===-- Support/StringExtras.h - Useful string functions ---------*- C++ -*--=//
+//===-- Support/StringExtras.h - Useful string functions --------*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 // This file contains some functions that are useful when dealing with strings.
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef SUPPORT_STRING_EXTRAS_H
-#define SUPPORT_STRING_EXTRAS_H
+#ifndef SUPPORT_STRINGEXTRAS_H
+#define SUPPORT_STRINGEXTRAS_H
 
 #include "Support/DataTypes.h"
 #include <string>
 #include <stdio.h>
 
+static inline std::string utohexstr(uint64_t X) {
+  char Buffer[40];
+  char *BufPtr = Buffer+39;
+
+  *BufPtr = 0;                  // Null terminate buffer...
+  if (X == 0) *--BufPtr = '0';  // Handle special case...
+
+  while (X) {
+    unsigned Mod = X & 15;
+    if (Mod < 10)
+      *--BufPtr = '0' + Mod;
+    else
+      *--BufPtr = 'A' + Mod-10;
+    X >>= 4;
+  }
+  return std::string(BufPtr);
+}
+
 static inline std::string utostr(uint64_t X, bool isNeg = false) {
   char Buffer[40];
   char *BufPtr = Buffer+39;
@@ -62,7 +87,7 @@ static inline std::string itostr(int X) {
 
 static inline std::string ftostr(double V) {
   char Buffer[200];
-  snprintf(Buffer, 200, "%e", V);
+  snprintf(Buffer, 200, "%20.6e", V);
   return Buffer;
 }