2022-04-15 06:39:48 +00:00
|
|
|
#ifndef COSMOPOLITAN_LIBC_TYPE2STR_H_
|
|
|
|
#define COSMOPOLITAN_LIBC_TYPE2STR_H_
|
|
|
|
#if __STDC_VERSION__ + 0 >= 201112
|
|
|
|
/* clang-format off */
|
|
|
|
|
|
|
|
#define _TYPE2STR(X) \
|
|
|
|
_Generic(X, \
|
|
|
|
_Bool: "_Bool", \
|
|
|
|
signed char: "signed char", \
|
|
|
|
unsigned char: "unsigned char", \
|
|
|
|
char: "char", \
|
|
|
|
short: "short", \
|
|
|
|
unsigned short: "unsigned short", \
|
|
|
|
int: "int", \
|
|
|
|
unsigned: "unsigned", \
|
|
|
|
long: "long", \
|
|
|
|
unsigned long: "unsigned long", \
|
|
|
|
long long: "long long", \
|
|
|
|
unsigned long long: "unsigned long long", \
|
2023-06-16 22:32:18 +00:00
|
|
|
__int128: "__int128", \
|
|
|
|
unsigned __int128: "unsigned __int128", \
|
2022-04-15 06:39:48 +00:00
|
|
|
float: "float", \
|
|
|
|
double: "double", \
|
|
|
|
long double: "long double")
|
|
|
|
|
|
|
|
#define _PRINTF_GENERIC(X, D, U) \
|
|
|
|
_Generic(X, \
|
|
|
|
_Bool: "hhh" U, \
|
|
|
|
signed char: "hh" D, \
|
|
|
|
unsigned char: "hh" U, \
|
|
|
|
char: "hh" D, \
|
|
|
|
short: "h" D, \
|
|
|
|
unsigned short: "h" U, \
|
|
|
|
int: D, \
|
|
|
|
unsigned: U, \
|
|
|
|
long: "l" D, \
|
|
|
|
unsigned long: "l" U, \
|
|
|
|
long long: "ll" D, \
|
|
|
|
unsigned long long: "ll" U, \
|
|
|
|
float: "f", \
|
|
|
|
double: "f", \
|
|
|
|
long double: "Lf")
|
|
|
|
|
|
|
|
/* clang-format on */
|
|
|
|
#endif /* C11 */
|
|
|
|
#endif /* COSMOPOLITAN_LIBC_TYPE2STR_H_ */
|