blob: e67e25ced51761761fbe663a6854ce8ac6b41ce7 [file] [log] [blame]
Chris Lattnercee8f9a2001-11-27 00:03:19 +00001//===-- Support/StringExtras.h - Useful string functions ---------*- C++ -*--=//
Chris Lattner00950542001-06-06 20:29:01 +00002//
3// This file contains some functions that are useful when dealing with strings.
Chris Lattner00950542001-06-06 20:29:01 +00004//
5//===----------------------------------------------------------------------===//
6
Chris Lattnercee8f9a2001-11-27 00:03:19 +00007#ifndef SUPPORT_STRING_EXTRAS_H
8#define SUPPORT_STRING_EXTRAS_H
Chris Lattner00950542001-06-06 20:29:01 +00009
Chris Lattnercee8f9a2001-11-27 00:03:19 +000010#include "Support/DataTypes.h"
Chris Lattner00950542001-06-06 20:29:01 +000011#include <string>
Chris Lattner2e35bed2001-07-15 00:16:38 +000012#include <stdio.h>
Chris Lattner5f621912001-10-29 13:24:31 +000013
Chris Lattner00950542001-06-06 20:29:01 +000014static inline string utostr(uint64_t X, bool isNeg = false) {
15 char Buffer[40];
16 char *BufPtr = Buffer+39;
17
18 *BufPtr = 0; // Null terminate buffer...
19 if (X == 0) *--BufPtr = '0'; // Handle special case...
20
21 while (X) {
22 *--BufPtr = '0' + (X % 10);
23 X /= 10;
24 }
25
26 if (isNeg) *--BufPtr = '-'; // Add negative sign...
27
28 return string(BufPtr);
29}
30
31static inline string itostr(int64_t X) {
32 if (X < 0)
33 return utostr((uint64_t)-X, true);
34 else
35 return utostr((uint64_t)X);
36}
37
38
39static inline string utostr(unsigned X, bool isNeg = false) {
40 char Buffer[20];
41 char *BufPtr = Buffer+19;
42
43 *BufPtr = 0; // Null terminate buffer...
44 if (X == 0) *--BufPtr = '0'; // Handle special case...
45
46 while (X) {
47 *--BufPtr = '0' + (X % 10);
48 X /= 10;
49 }
50
51 if (isNeg) *--BufPtr = '-'; // Add negative sign...
52
53 return string(BufPtr);
54}
55
56static inline string itostr(int X) {
57 if (X < 0)
58 return utostr((unsigned)-X, true);
59 else
60 return utostr((unsigned)X);
61}
62
Chris Lattner2e35bed2001-07-15 00:16:38 +000063static inline string ftostr(double V) {
64 char Buffer[200];
Chris Lattner6eaa4572001-11-01 22:06:00 +000065 snprintf(Buffer, 200, "%e", V);
Chris Lattner2e35bed2001-07-15 00:16:38 +000066 return Buffer;
67}
68
Chris Lattner00950542001-06-06 20:29:01 +000069#endif