HeMPS  8.0
stdlib.h
Go to the documentation of this file.
1 
13 #ifndef __STDLIB_H__
14 #define __STDLIB_H__
15 
16 //#include <stdarg.h>
17 #include<stddef.h>
18 
19 #define FALSE 0
20 #define TRUE 1
21 
22 char *itoa(unsigned int num)
23 {
24  static char buf[12];
25  static char buf2[12];
26  int i,j;
27 
28  if (num==0)
29  {
30  buf[0] = '0';
31  buf[1] = '\0';
32  return &buf[0];
33  }
34 
35  for(i=0;i<11 && num!=0;i++)
36  {
37  buf[i]=(char)((num%10)+'0');
38  num/=10;
39  }
40  buf2[i] = '\0';
41  j = 0;
42  i--;
43  for(;i>=0;i--){
44  buf2[i]=buf[j];
45  j++;
46  }
47  return &buf2[0];
48 }
49 
50 
51 char *itoh(unsigned int num)
52 {
53  static char buf[11];
54  int i;
55  buf[10]=0;
56 
57  buf[0] = '0';
58  buf[1] = 'x';
59 
60  if (num==0)
61  {
62  buf[2] = '0';
63  buf[3] = '0';
64  buf[4] = '0';
65  buf[5] = '0';
66  buf[6] = '0';
67  buf[7] = '0';
68  buf[8] = '0';
69  buf[9] = '0';
70  return buf;
71  }
72 
73  for(i=9;i>=2;--i)
74  {
75  if ((num%16) < 10)
76  buf[i]=(char)((num%16)+'0');
77  else
78  buf[i]=(char)((num%16)+'W');
79 
80  num/=16;
81  }
82 
83  return buf;
84 }
85 
86 int abs(int num)
87 {
88  if(num<0) return -num;
89  else return num;
90 }
91 
92 int rand(int seed, int min, int max)
93 {
94  int lfsr = seed;
95 
96  lfsr = (lfsr >> 1) ^ (-(lfsr & 1u) & 0xB400u);
97 
98  return (lfsr % max + min);
99 }
100 
101 int add(int a, int b)
102 {
103  int res;
104 
105  res=a+b;
106  return res;
107 }
108 
109 
110 int sub(int a, int b)
111 {
112  int res;
113 
114  res=a-b;
115  return res;
116 }
117 
118 void *memset(void *dst, int c, unsigned long bytes) {
119 
120  unsigned char *Dst = (unsigned char*)dst;
121 
122  while((int)bytes-- > 0)
123  *Dst++ = (unsigned char)c;
124 
125  return dst;
126 }
127 
128 char *fixetoa(int nume)
129 {
130  static char buf[13];
131  static char buf2[13];
132  int i,j;
133  int num=nume;
134 
135  if (num<0)
136  {
137  num=num*(-1);
138 
139  for(i=0;i<12 && (num!=0 || i<5) ;i++)
140  {
141  if (num==0)
142  buf[i]='0';
143  else
144  {
145  buf[i]=(char)((num%10)+'0');
146  num/=10;
147  }
148  }
149 
150  i++;
151  i++;
152  buf2[i] = '\0';
153  j = 0;
154  i--;
155 
156  for(;i>=0;i--)
157  {
158  if(j==4)
159  {
160  buf2[i]='.';
161  i--;
162  }
163  buf2[i]=buf[j];
164  j++;
165  }
166 
167  buf2[0]='-';
168  return &buf2[0];
169  }
170  else
171  {
172  if (num==0)
173  {
174  buf[0] = '0';
175  buf[1] = '\0';
176  return &buf[0];
177  }
178 
179  for(i=0;i<12 && (num!=0 || i<5);i++)
180  {
181  if (num==0)
182  buf[i]='0';
183  else
184  {
185  buf[i]=(char)((num%10)+'0');
186  num/=10;
187  }
188  }
189 
190  i++;
191  buf2[i] = '\0';
192  j = 0;
193  i--;
194  for(;i>=0;i--)
195  {
196  if(j==4)
197  {
198  buf2[i]='.';
199  i--;
200  }
201  buf2[i]=buf[j];
202  j++;
203  }
204  return &buf2[0];
205  }
206 }
207 
208 char *strcpy(char *dst, const char *src) {
209 
210  char *dstSave=dst;
211  int c;
212 
213  do {
214  c = *dst++ = *src++;
215  } while(c);
216 
217  return dstSave;
218 }
219 
220 /*void memcpy(unsigned int *dest, const unsigned int *src, size_t n) {
221 
222  unsigned int i = n/4;
223 
224  while(i--)
225  dest[i] = src[i];
226 }*/
227 
228 int strlen(const char *string) {
229 
230  const char *base=string;
231 
232  while(*string++) ;
233 
234  return string - base - 1;
235 }
236 
237 #endif