Enhance zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros

* defs.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll):
Add support of char types.
* tests/tests.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll):
Likewise.
This commit is contained in:
Дмитрий Левин 2016-09-26 20:27:53 +00:00
parent 340909fd00
commit 906dc4aaa1
2 changed files with 8 additions and 4 deletions

6
defs.h
View File

@ -751,7 +751,8 @@ extern unsigned current_wordsize;
* Zero-extend a signed integer type to unsigned long long.
*/
#define zero_extend_signed_to_ull(v) \
(sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
(sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
(unsigned long long) (v))
@ -760,7 +761,8 @@ extern unsigned current_wordsize;
* Sign-extend an unsigned integer type to long long.
*/
#define sign_extend_unsigned_to_ll(v) \
(sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
(sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
(long long) (v))

View File

@ -132,14 +132,16 @@ int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
/* Zero-extend a signed integer type to unsigned long long. */
#define zero_extend_signed_to_ull(v) \
(sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
(sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
(unsigned long long) (v))
/* Sign-extend an unsigned integer type to long long. */
#define sign_extend_unsigned_to_ll(v) \
(sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
(sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
(long long) (v))