Set of Files to enable some Arduino examples.
Dependents: TFT_Touch_botao_v1 TFT_Touch_exemplo5_git_touch TESTE_1 TFT_Touch_exemplo6_git_touch_button_3_
Diff: itoa.c
- Revision:
- 0:5952bbaff1c6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/itoa.c Mon Apr 26 14:52:27 2021 +0000 @@ -0,0 +1,168 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "itoa.h" +#include <string.h> + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#if 0 +/* reverse: reverse string s in place */ +static void reverse(char s[]) +{ + int i, j ; + char c ; + + for (i = 0, j = strlen(s) - 1 ; i < j ; i++, j--) { + c = s[i] ; + s[i] = s[j] ; + s[j] = c ; + } +} + +/* itoa: convert n to characters in s */ +extern void itoa(int n, char s[]) +{ + int i, sign ; + + if ((sign = n) < 0) { /* record sign */ + n = -n; /* make n positive */ + } + + i = 0; + do { + /* generate digits in reverse order */ + s[i++] = n % 10 + '0'; /* get next digit */ + } while ((n /= 10) > 0) ; /* delete it */ + + if (sign < 0) { + s[i++] = '-'; + } + + s[i] = '\0'; + + reverse(s) ; +} + +#else + +extern char *itoa(int value, char *string, int radix) +{ + return ltoa(value, string, radix) ; +} + +extern char *ltoa(long value, char *string, int radix) +{ + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v; + int sign; + char *sp; + + if (string == NULL) { + return 0 ; + } + + if (radix > 36 || radix <= 1) { + return 0 ; + } + + sign = (radix == 10 && value < 0); + if (sign) { + v = -value; + } else { + v = (unsigned long)value; + } + + while (v || tp == tmp) { + i = v % radix; + v = v / radix; + if (i < 10) { + *tp++ = i + '0'; + } else { + *tp++ = i + 'a' - 10; + } + } + + sp = string; + + if (sign) { + *sp++ = '-'; + } + while (tp > tmp) { + *sp++ = *--tp; + } + *sp = 0; + + return string; +} +#if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 9 || \ + (__GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ > 2))) +extern char *utoa(unsigned value, char *string, int radix) +#else +extern char *utoa(unsigned long value, char *string, int radix) +#endif +{ + return ultoa(value, string, radix) ; +} + +extern char *ultoa(unsigned long value, char *string, int radix) +{ + char tmp[33]; + char *tp = tmp; + long i; + unsigned long v = value; + char *sp; + + if (string == NULL) { + return 0; + } + + if (radix > 36 || radix <= 1) { + return 0; + } + + while (v || tp == tmp) { + i = v % radix; + v = v / radix; + if (i < 10) { + *tp++ = i + '0'; + } else { + *tp++ = i + 'a' - 10; + } + } + + sp = string; + + + while (tp > tmp) { + *sp++ = *--tp; + } + *sp = 0; + + return string; +} +#endif /* 0 */ + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus +