Removed some obsolete definitions of __unit64.
[reactos.git] / reactos / lib / ntdll / stdlib / itow.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/ntdll/stdlib/itow.c
5 * PURPOSE: converts an integer to Unicode
6 * PROGRAMER:
7 * UPDATE HISTORY:
8 * 1995: Created
9 * 1998: Added ltoa Boudewijn Dekker
10 */
11 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
12 #include <stdlib.h>
13
14 wchar_t *
15 _i64tow(__int64 value, wchar_t *string, int radix)
16 {
17 wchar_t tmp[65];
18 wchar_t *tp = tmp;
19 __int64 i;
20 unsigned __int64 v;
21 __int64 sign;
22 wchar_t *sp;
23
24 if (radix > 36 || radix <= 1)
25 {
26 return 0;
27 }
28
29 sign = (radix == 10 && value < 0);
30 if (sign)
31 v = -value;
32 else
33 v = (unsigned __int64)value;
34 while (v || tp == tmp)
35 {
36 i = v % radix;
37 v = v / radix;
38 if (i < 10)
39 *tp++ = i+L'0';
40 else
41 *tp++ = i + L'a' - 10;
42 }
43
44 sp = string;
45 if (sign)
46 *sp++ = L'-';
47 while (tp > tmp)
48 *sp++ = *--tp;
49 *sp = 0;
50 return string;
51 }
52
53
54 wchar_t *
55 _itow(int value, wchar_t *string, int radix)
56 {
57 wchar_t tmp[33];
58 wchar_t *tp = tmp;
59 int i;
60 unsigned v;
61 int sign;
62 wchar_t *sp;
63
64 if (radix > 36 || radix <= 1)
65 {
66 return 0;
67 }
68
69 sign = (radix == 10 && value < 0);
70 if (sign)
71 v = -value;
72 else
73 v = (unsigned)value;
74 while (v || tp == tmp)
75 {
76 i = v % radix;
77 v = v / radix;
78 if (i < 10)
79 *tp++ = i+L'0';
80 else
81 *tp++ = i + L'a' - 10;
82 }
83
84 sp = string;
85 if (sign)
86 *sp++ = L'-';
87 while (tp > tmp)
88 *sp++ = *--tp;
89 *sp = 0;
90 return string;
91 }
92
93
94 wchar_t *
95 _ltow(long value, wchar_t *string, int radix)
96 {
97 wchar_t tmp[33];
98 wchar_t *tp = tmp;
99 long i;
100 unsigned long v;
101 int sign;
102 wchar_t *sp;
103
104 if (radix > 36 || radix <= 1)
105 {
106 return 0;
107 }
108
109 sign = (radix == 10 && value < 0);
110 if (sign)
111 v = -value;
112 else
113 v = (unsigned long)value;
114 while (v || tp == tmp)
115 {
116 i = v % radix;
117 v = v / radix;
118 if (i < 10)
119 *tp++ = i+L'0';
120 else
121 *tp++ = i + L'a' - 10;
122 }
123
124 sp = string;
125 if (sign)
126 *sp++ = L'-';
127 while (tp > tmp)
128 *sp++ = *--tp;
129 *sp = 0;
130 return string;
131 }
132
133
134 wchar_t *
135 _ultow(unsigned long value, wchar_t *string, int radix)
136 {
137 wchar_t tmp[33];
138 wchar_t *tp = tmp;
139 long i;
140 unsigned long v = value;
141 wchar_t *sp;
142
143 if (radix > 36 || radix <= 1)
144 {
145 return 0;
146 }
147
148 while (v || tp == tmp)
149 {
150 i = v % radix;
151 v = v / radix;
152 if (i < 10)
153 *tp++ = i+L'0';
154 else
155 *tp++ = i + L'a' - 10;
156 }
157
158 sp = string;
159 while (tp > tmp)
160 *sp++ = *--tp;
161 *sp = 0;
162 return string;
163 }