mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-23 22:02:27 +00:00
Reduce header complexity
- Remove most __ASSEMBLER__ __LINKER__ ifdefs - Rename libc/intrin/bits.h to libc/serialize.h - Block pthread cancelation in fchmodat() polyfill - Remove `clang-format off` statements in third_party
This commit is contained in:
parent
96f979dfc5
commit
fa20edc44d
3057 changed files with 410 additions and 4398 deletions
116
libc/serialize.h
Normal file
116
libc/serialize.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
#ifndef COSMOPOLITAN_SERIALIZE_H_
|
||||
#define COSMOPOLITAN_SERIALIZE_H_
|
||||
#ifdef _COSMO_SOURCE
|
||||
|
||||
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||
#define __SWAPBE16(x) (x)
|
||||
#define __SWAPBE32(x) (x)
|
||||
#define __SWAPBE64(x) (x)
|
||||
#else
|
||||
#define __SWAPBE16(x) __builtin_bswap16(x)
|
||||
#define __SWAPBE32(x) __builtin_bswap32(x)
|
||||
#define __SWAPBE64(x) __builtin_bswap64(x)
|
||||
#endif
|
||||
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
#define __SWAPLE16(x) (x)
|
||||
#define __SWAPLE32(x) (x)
|
||||
#define __SWAPLE64(x) (x)
|
||||
#else
|
||||
#define __SWAPLE16(x) __builtin_bswap16(x)
|
||||
#define __SWAPLE32(x) __builtin_bswap32(x)
|
||||
#define __SWAPLE64(x) __builtin_bswap64(x)
|
||||
#endif
|
||||
|
||||
#define READ16LE(P) \
|
||||
(__extension__({ \
|
||||
uint16_t __x; \
|
||||
__builtin_memcpy(&__x, P, 16 / 8); \
|
||||
__SWAPLE16(__x); \
|
||||
}))
|
||||
|
||||
#define READ16BE(P) \
|
||||
(__extension__({ \
|
||||
uint16_t __x; \
|
||||
__builtin_memcpy(&__x, P, 16 / 8); \
|
||||
__SWAPBE16(__x); \
|
||||
}))
|
||||
|
||||
#define READ32LE(P) \
|
||||
(__extension__({ \
|
||||
uint32_t __x; \
|
||||
__builtin_memcpy(&__x, P, 32 / 8); \
|
||||
__SWAPLE32(__x); \
|
||||
}))
|
||||
|
||||
#define READ32BE(P) \
|
||||
(__extension__({ \
|
||||
uint32_t __x; \
|
||||
__builtin_memcpy(&__x, P, 32 / 8); \
|
||||
__SWAPBE32(__x); \
|
||||
}))
|
||||
|
||||
#define READ64LE(P) \
|
||||
(__extension__({ \
|
||||
uint64_t __x; \
|
||||
__builtin_memcpy(&__x, P, 64 / 8); \
|
||||
__SWAPLE32(__x); \
|
||||
}))
|
||||
|
||||
#define READ64BE(P) \
|
||||
(__extension__({ \
|
||||
uint64_t __x; \
|
||||
__builtin_memcpy(&__x, P, 64 / 8); \
|
||||
__SWAPBE64(__x); \
|
||||
}))
|
||||
|
||||
#define WRITE16LE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint16_t __x = __SWAPLE16(X); \
|
||||
__builtin_memcpy(__p, &__x, 16 / 8); \
|
||||
__p + 16 / 8; \
|
||||
}))
|
||||
|
||||
#define WRITE16BE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint16_t __x = __SWAPBE16(X); \
|
||||
__builtin_memcpy(__p, &__x, 16 / 8); \
|
||||
__p + 16 / 8; \
|
||||
}))
|
||||
|
||||
#define WRITE32LE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint32_t __x = __SWAPLE32(X); \
|
||||
__builtin_memcpy(__p, &__x, 32 / 8); \
|
||||
__p + 32 / 8; \
|
||||
}))
|
||||
|
||||
#define WRITE32BE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint32_t __x = __SWAPBE32(X); \
|
||||
__builtin_memcpy(__p, &__x, 32 / 8); \
|
||||
__p + 32 / 8; \
|
||||
}))
|
||||
|
||||
#define WRITE64LE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint64_t __x = __SWAPLE64(X); \
|
||||
__builtin_memcpy(__p, &__x, 64 / 8); \
|
||||
__p + 64 / 8; \
|
||||
}))
|
||||
|
||||
#define WRITE64BE(P, X) \
|
||||
(__extension__({ \
|
||||
__typeof__(&(P)[0]) __p = (P); \
|
||||
uint64_t __x = __SWAPBE64(X); \
|
||||
__builtin_memcpy(__p, &__x, 64 / 8); \
|
||||
__p + 64 / 8; \
|
||||
}))
|
||||
|
||||
#endif /* _COSMO_SOURCE */
|
||||
#endif /* COSMOPOLITAN_SERIALIZE_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue