32 #define PRINTF_LONG_SUPPORT 35 #define PRINTF_LONG_LONG_SUPPORT 38 #define PRINTF_SIZE_T_SUPPORT 43 #ifdef PRINTF_SIZE_T_SUPPORT 44 #include <sys/types.h> 47 #ifdef PRINTF_LONG_LONG_SUPPORT 48 # define PRINTF_LONG_SUPPORT 52 #ifdef __SIZEOF_POINTER__ 53 # define SIZEOF_POINTER __SIZEOF_POINTER__ 55 #ifdef __SIZEOF_LONG_LONG__ 56 # define SIZEOF_LONG_LONG __SIZEOF_LONG_LONG__ 58 #ifdef __SIZEOF_LONG__ 59 # define SIZEOF_LONG __SIZEOF_LONG__ 62 # define SIZEOF_INT __SIZEOF_INT__ 66 # define _TFP_GCC_NO_INLINE_ __attribute__ ((noinline)) 68 # define _TFP_GCC_NO_INLINE_ 86 #ifdef PRINTF_LONG_LONG_SUPPORT 88 unsigned long long int num,
struct param *p)
91 unsigned long long int d = 1;
93 while (num / d >= p->
base)
99 if (n || dgt > 0 || d == 0) {
100 *bf++ = dgt + (dgt < 10 ?
'0' : (p->
uc ?
'A' :
'a') - 10);
117 #ifdef PRINTF_LONG_SUPPORT 121 unsigned long int d = 1;
123 while (num / d >= p->
base)
129 if (n || dgt > 0 || d == 0) {
130 *bf++ = dgt + (dgt < 10 ?
'0' : (p->
uc ?
'A' :
'a') - 10);
152 while (num / d >= p->
base)
158 if (n || dgt > 0 || d == 0) {
159 *bf++ = dgt + (dgt < 10 ?
'0' : (p->
uc ?
'A' :
'a') - 10);
177 if (ch >=
'0' && ch <=
'9')
179 else if (ch >=
'a' && ch <=
'f')
180 return ch -
'a' + 10;
181 else if (ch >=
'A' && ch <=
'F')
182 return ch -
'A' + 10;
189 const char *p = *src;
190 unsigned int num = 0;
192 while ((digit =
a2d(ch)) >= 0) {
195 num = num * base + digit;
210 while (*bf++ && n > 0)
216 else if (p->
alt && p->
base == 8)
232 putf(putp, (p->
uc ?
'X' :
'x'));
233 }
else if (p->
alt && p->
base == 8) {
258 #ifdef PRINTF_LONG_SUPPORT 266 while ((ch = *(fmt++))) {
270 #ifdef PRINTF_LONG_SUPPORT 281 while ((ch = *(fmt++))) {
299 if (ch >=
'0' && ch <=
'9') {
311 }
while ((ch >=
'0') && (ch <=
'9'));
314 #ifdef PRINTF_SIZE_T_SUPPORT 315 # ifdef PRINTF_LONG_SUPPORT 318 if (
sizeof(
size_t) ==
sizeof(
unsigned long int))
320 # ifdef PRINTF_LONG_LONG_SUPPORT 321 else if (
sizeof(
size_t) ==
sizeof(
unsigned long long int))
328 #ifdef PRINTF_LONG_SUPPORT 332 #ifdef PRINTF_LONG_LONG_SUPPORT 345 #ifdef PRINTF_LONG_SUPPORT 346 #ifdef PRINTF_LONG_LONG_SUPPORT 348 ulli2a(va_arg(va,
unsigned long long int), &p);
352 uli2a(va_arg(va,
unsigned long int), &p);
355 ui2a(va_arg(va,
unsigned int), &p);
361 #ifdef PRINTF_LONG_SUPPORT 362 #ifdef PRINTF_LONG_LONG_SUPPORT 364 lli2a(va_arg(va,
long long int), &p);
368 li2a(va_arg(va,
long int), &p);
371 i2a(va_arg(va,
int), &p);
374 #ifdef SIZEOF_POINTER 377 # if defined(SIZEOF_INT) && SIZEOF_POINTER <= SIZEOF_INT 379 # elif defined(SIZEOF_LONG) && SIZEOF_POINTER <= SIZEOF_LONG 381 # elif defined(SIZEOF_LONG_LONG) && SIZEOF_POINTER <= SIZEOF_LONG_LONG 388 p.
uc = (ch ==
'X')?1:0;
389 #ifdef PRINTF_LONG_SUPPORT 390 #ifdef PRINTF_LONG_LONG_SUPPORT 392 ulli2a(va_arg(va,
unsigned long long int), &p);
396 uli2a(va_arg(va,
unsigned long int), &p);
399 ui2a(va_arg(va,
unsigned int), &p);
404 ui2a(va_arg(va,
unsigned int), &p);
408 putf(putp, (
char)(va_arg(va,
int)));
411 p.
bf = va_arg(va,
char *);
425 #if TINYPRINTF_DEFINE_TFP_PRINTF 444 #if TINYPRINTF_DEFINE_TFP_SPRINTF 485 va_start(ap, format);
518 va_start(ap, format);
static ICACHE_FLASH_ATTR void lli2a(long long int num, struct param *p)
ICACHE_FLASH_ATTR void tfp_format(void *putp, putcf putf, const char *fmt, va_list va)
ICACHE_FLASH_ATTR int tfp_vsprintf(char *str, const char *format, va_list ap)
static ICACHE_FLASH_ATTR void _TFP_GCC_NO_INLINE_ ulli2a(unsigned long long int num, struct param *p)
static ICACHE_FLASH_ATTR void uli2a(unsigned long int num, struct param *p)
static ICACHE_FLASH_ATTR char a2u(char ch, const char **src, int base, unsigned int *nump)
ICACHE_FLASH_ATTR int tfp_sprintf(char *str, const char *format,...)
#define ICACHE_FLASH_ATTR
#define _TFP_GCC_NO_INLINE_
static ICACHE_FLASH_ATTR void _vsnprintf_putcf(void *p, char c)
static ICACHE_FLASH_ATTR void putchw(void *putp, putcf putf, struct param *p)
ICACHE_FLASH_ATTR int tfp_vsnprintf(char *str, size_t size, const char *format, va_list ap)
static void * stdout_putp
ICACHE_FLASH_ATTR void init_printf(void *putp, putcf putf)
ICACHE_FLASH_ATTR void tfp_printf(char *fmt,...)
static ICACHE_FLASH_ATTR void ui2a(unsigned int num, struct param *p)
static ICACHE_FLASH_ATTR void _vsprintf_putcf(void *p, char c)
ICACHE_FLASH_ATTR int tfp_snprintf(char *str, size_t size, const char *format,...)
void(* putcf)(void *, char)
static ICACHE_FLASH_ATTR void li2a(long num, struct param *p)
static ICACHE_FLASH_ATTR void i2a(int num, struct param *p)
static ICACHE_FLASH_ATTR int a2d(char ch)