cosmopolitan/libc/type2str.h
Justine Tunney 933411ba99 Improve synchronization
- Fix bugs in kDos2Errno definition
- malloc() should now be thread safe
- Fix bug in rollup.com header generator
- Fix open(O_APPEND) on the New Technology
- Fix select() on the New Technology and test it
- Work towards refactoring i/o for thread safety
- Socket reads and writes on NT now poll for signals
- Work towards i/o completion ports on the New Technology
- Make read() and write() intermittently check for signals
- Blinkenlights keyboard i/o so much better on NT w/ poll()
- You can now poll() files and sockets at the same time on NT
- Fix bug in appendr() that manifests with dlmalloc footers off
2022-04-15 15:31:55 -07:00

44 lines
1.6 KiB
C

#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", \
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_ */