Module Name: src Committed By: christos Date: Sat Aug 8 21:23:15 UTC 2009
Modified Files: src/sys/sys: bswap.h cdefs.h endian.h termios.h Log Message: Create and use __CAST(type, value) in headers so that modern c++ with -Wold-style-casts does not bitch. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/sys/bswap.h cvs rdiff -u -r1.76 -r1.77 src/sys/sys/cdefs.h cvs rdiff -u -r1.27 -r1.28 src/sys/sys/endian.h cvs rdiff -u -r1.29 -r1.30 src/sys/sys/termios.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/bswap.h diff -u src/sys/sys/bswap.h:1.15 src/sys/sys/bswap.h:1.16 --- src/sys/sys/bswap.h:1.15 Mon Jul 20 14:45:27 2009 +++ src/sys/sys/bswap.h Sat Aug 8 17:23:15 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: bswap.h,v 1.15 2009/07/20 18:45:27 joerg Exp $ */ +/* $NetBSD: bswap.h,v 1.16 2009/08/08 21:23:15 christos Exp $ */ /* Written by Manuel Bouyer. Public domain */ @@ -39,7 +39,7 @@ #endif #define __byte_swap_u64_constant(x) \ - ((uint64_t) \ + (__CAST(uint64_t, \ ((((x) & 0xff00000000000000ull) >> 56) | \ (((x) & 0x00ff000000000000ull) >> 40) | \ (((x) & 0x0000ff0000000000ull) >> 24) | \ @@ -47,19 +47,19 @@ (((x) & 0x00000000ff000000ull) << 8) | \ (((x) & 0x0000000000ff0000ull) << 24) | \ (((x) & 0x000000000000ff00ull) << 40) | \ - (((x) & 0x00000000000000ffull) << 56))) + (((x) & 0x00000000000000ffull) << 56)))) #define __byte_swap_u32_constant(x) \ - ((uint32_t) \ + (__CAST(uint32_t, \ ((((x) & 0xff000000) >> 24) | \ (((x) & 0x00ff0000) >> 8) | \ (((x) & 0x0000ff00) << 8) | \ - (((x) & 0x000000ff) << 24))) + (((x) & 0x000000ff) << 24)))) #define __byte_swap_u16_constant(x) \ - ((uint16_t) \ + (__CAST(uint16_t, \ ((((x) & 0xff00) >> 8) | \ - (((x) & 0x00ff) << 8))) + (((x) & 0x00ff) << 8)))) #define bswap64(x) \ (__builtin_constant_p((x)) ? \ Index: src/sys/sys/cdefs.h diff -u src/sys/sys/cdefs.h:1.76 src/sys/sys/cdefs.h:1.77 --- src/sys/sys/cdefs.h:1.76 Mon Jul 20 13:46:04 2009 +++ src/sys/sys/cdefs.h Sat Aug 8 17:23:15 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs.h,v 1.76 2009/07/20 17:46:04 joerg Exp $ */ +/* $NetBSD: cdefs.h,v 1.77 2009/08/08 21:23:15 christos Exp $ */ /* * Copyright (c) 1991, 1993 @@ -434,4 +434,14 @@ #define __SHIFTIN(__x, __mask) ((__x) * __LOWEST_SET_BIT(__mask)) #define __SHIFTOUT_MASK(__mask) __SHIFTOUT((__mask), (__mask)) +/* + * Only to be used in other headers that are included from both c or c++ + * NOT to be used in code. + */ +#ifdef __cplusplus +#define __CAST(__dt, __st) static_cast<__dt>(__st) +#else +#define __CAST(__dt, __st) ((__dt)(__st)) +#endif + #endif /* !_SYS_CDEFS_H_ */ Index: src/sys/sys/endian.h diff -u src/sys/sys/endian.h:1.27 src/sys/sys/endian.h:1.28 --- src/sys/sys/endian.h:1.27 Mon Jul 20 14:45:27 2009 +++ src/sys/sys/endian.h Sat Aug 8 17:23:15 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: endian.h,v 1.27 2009/07/20 18:45:27 joerg Exp $ */ +/* $NetBSD: endian.h,v 1.28 2009/08/08 21:23:15 christos Exp $ */ /* * Copyright (c) 1987, 1991, 1993 @@ -122,15 +122,15 @@ #else /* LITTLE_ENDIAN || !defined(__lint__) */ -#define ntohl(x) bswap32((uint32_t)(x)) -#define ntohs(x) bswap16((uint16_t)(x)) -#define htonl(x) bswap32((uint32_t)(x)) -#define htons(x) bswap16((uint16_t)(x)) - -#define NTOHL(x) (x) = ntohl((uint32_t)(x)) -#define NTOHS(x) (x) = ntohs((uint16_t)(x)) -#define HTONL(x) (x) = htonl((uint32_t)(x)) -#define HTONS(x) (x) = htons((uint16_t)(x)) +#define ntohl(x) bswap32(__CAST(uint32_t, (x))) +#define ntohs(x) bswap16(__CAST(uint16_t, (x))) +#define htonl(x) bswap32(__CAST(uint32_t, (x))) +#define htons(x) bswap16(__CAST(uint16_t, (x))) + +#define NTOHL(x) (x) = ntohl(__CAST(uint32_t, (x))) +#define NTOHS(x) (x) = ntohs(__CAST(uint16_t, (x))) +#define HTONL(x) (x) = htonl(__CAST(uint32_t, (x))) +#define HTONS(x) (x) = htons(__CAST(uint16_t, (x))) #endif /* LITTLE_ENDIAN || !defined(__lint__) */ /* @@ -142,32 +142,32 @@ #define htobe16(x) (x) #define htobe32(x) (x) #define htobe64(x) (x) -#define htole16(x) bswap16((uint16_t)(x)) -#define htole32(x) bswap32((uint32_t)(x)) -#define htole64(x) bswap64((uint64_t)(x)) - -#define HTOBE16(x) (void) (x) -#define HTOBE32(x) (void) (x) -#define HTOBE64(x) (void) (x) -#define HTOLE16(x) (x) = bswap16((uint16_t)(x)) -#define HTOLE32(x) (x) = bswap32((uint32_t)(x)) -#define HTOLE64(x) (x) = bswap64((uint64_t)(x)) +#define htole16(x) bswap16(__CAST(uint16_t, (x))) +#define htole32(x) bswap32(__CAST(uint32_t, (x))) +#define htole64(x) bswap64(__CAST(uint64_t, (x))) + +#define HTOBE16(x) __CAST(void, (x)) +#define HTOBE32(x) __CAST(void, (x)) +#define HTOBE64(x) __CAST(void, (x)) +#define HTOLE16(x) (x) = bswap16(__CAST(uint16_t, (x))) +#define HTOLE32(x) (x) = bswap32(__CAST(uint32_t, (x))) +#define HTOLE64(x) (x) = bswap64(__CAST(uint64_t, (x))) #else /* LITTLE_ENDIAN */ -#define htobe16(x) bswap16((uint16_t)(x)) -#define htobe32(x) bswap32((uint32_t)(x)) -#define htobe64(x) bswap64((uint64_t)(x)) +#define htobe16(x) bswap16(__CAST(uint16_t, (x))) +#define htobe32(x) bswap32(__CAST(uint32_t, (x))) +#define htobe64(x) bswap64(__CAST(uint64_t, (x))) #define htole16(x) (x) #define htole32(x) (x) #define htole64(x) (x) -#define HTOBE16(x) (x) = bswap16((uint16_t)(x)) -#define HTOBE32(x) (x) = bswap32((uint32_t)(x)) -#define HTOBE64(x) (x) = bswap64((uint64_t)(x)) -#define HTOLE16(x) (void) (x) -#define HTOLE32(x) (void) (x) -#define HTOLE64(x) (void) (x) +#define HTOBE16(x) (x) = bswap16(__CAST(uint16_t, (x))) +#define HTOBE32(x) (x) = bswap32(__CAST(uint32_t, (x))) +#define HTOBE64(x) (x) = bswap64(__CAST(uint64_t, (x))) +#define HTOLE16(x) __CAST(void, (x)) +#define HTOLE32(x) __CAST(void, (x)) +#define HTOLE64(x) __CAST(void, (x)) #endif /* LITTLE_ENDIAN */ @@ -230,63 +230,63 @@ static __inline void __unused be16enc(void *buf, uint16_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - p[0] = (uint8_t)(((unsigned)u >> 8) & 0xff); - p[1] = (uint8_t)(u & 0xff); + p[0] = __CAST(uint8_t, ((__CAST(unsigned, u) >> 8) & 0xff)); + p[1] = __CAST(uint8_t, (u & 0xff)); } static __inline void __unused le16enc(void *buf, uint16_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - p[0] = (uint8_t)(u & 0xff); - p[1] = (uint8_t)(((unsigned)u >> 8) & 0xff); + p[0] = __CAST(uint8_t, (u & 0xff)); + p[1] = __CAST(uint8_t, ((__CAST(unsigned, u) >> 8) & 0xff)); } static __inline uint16_t __unused be16dec(const void *buf) { - const uint8_t *p = (const uint8_t *)buf; + const uint8_t *p = __CAST(const uint8_t *, buf); - return (uint16_t)((p[0] << 8) | p[1]); + return __CAST(uint16_t, ((p[0] << 8) | p[1])); } static __inline uint16_t __unused le16dec(const void *buf) { - const uint8_t *p = (const uint8_t *)buf; + const uint8_t *p = __CAST(const uint8_t *, buf); - return (uint16_t)((p[1] << 8) | p[0]); + return __CAST(uint16_t, ((p[1] << 8) | p[0])); } static __inline void __unused be32enc(void *buf, uint32_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - p[0] = (uint8_t)((u >> 24) & 0xff); - p[1] = (uint8_t)((u >> 16) & 0xff); - p[2] = (uint8_t)((u >> 8) & 0xff); - p[3] = (uint8_t)(u & 0xff); + p[0] = __CAST(uint8_t, ((u >> 24) & 0xff)); + p[1] = __CAST(uint8_t, ((u >> 16) & 0xff)); + p[2] = __CAST(uint8_t, ((u >> 8) & 0xff)); + p[3] = __CAST(uint8_t, (u & 0xff)); } static __inline void __unused le32enc(void *buf, uint32_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - p[0] = (uint8_t)(u & 0xff); - p[1] = (uint8_t)((u >> 8) & 0xff); - p[2] = (uint8_t)((u >> 16) & 0xff); - p[3] = (uint8_t)((u >> 24) & 0xff); + p[0] = __CAST(uint8_t, (u & 0xff)); + p[1] = __CAST(uint8_t, ((u >> 8) & 0xff)); + p[2] = __CAST(uint8_t, ((u >> 16) & 0xff)); + p[3] = __CAST(uint8_t, ((u >> 24) & 0xff)); } static __inline uint32_t __unused be32dec(const void *buf) { - const uint8_t *p = (const uint8_t *)buf; + const uint8_t *p = __CAST(const uint8_t *, buf); return ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); } @@ -294,7 +294,7 @@ static __inline uint32_t __unused le32dec(const void *buf) { - const uint8_t *p = (const uint8_t *)buf; + const uint8_t *p = __CAST(const uint8_t *, buf); return ((p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]); } @@ -302,19 +302,19 @@ static __inline void __unused be64enc(void *buf, uint64_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - be32enc(p, (uint32_t)(u >> 32)); - be32enc(p + 4, (uint32_t)(u & 0xffffffffULL)); + be32enc(p, __CAST(uint32_t, (u >> 32))); + be32enc(p + 4, __CAST(uint32_t, (u & 0xffffffffULL))); } static __inline void __unused le64enc(void *buf, uint64_t u) { - uint8_t *p = (uint8_t *)buf; + uint8_t *p = __CAST(uint8_t *, buf); - le32enc(p, (uint32_t)(u & 0xffffffffULL)); - le32enc(p + 4, (uint32_t)(u >> 32)); + le32enc(p, __CAST(uint32_t, (u & 0xffffffffULL))); + le32enc(p + 4, __CAST(uint32_t, (u >> 32))); } static __inline uint64_t __unused @@ -322,7 +322,7 @@ { const uint8_t *p = (const uint8_t *)buf; - return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4)); + return ((__CAST(uint64_t, be32dec(p)) << 32) | be32dec(p + 4)); } static __inline uint64_t __unused @@ -330,7 +330,7 @@ { const uint8_t *p = (const uint8_t *)buf; - return (le32dec(p) | ((uint64_t)le32dec(p + 4) << 32)); + return (le32dec(p) | (__CAST(uint64_t, le32dec(p + 4)) << 32)); } #endif /* GCC >= 2.95 */ Index: src/sys/sys/termios.h diff -u src/sys/sys/termios.h:1.29 src/sys/sys/termios.h:1.30 --- src/sys/sys/termios.h:1.29 Sun Dec 11 07:25:21 2005 +++ src/sys/sys/termios.h Sat Aug 8 17:23:15 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: termios.h,v 1.29 2005/12/11 12:25:21 christos Exp $ */ +/* $NetBSD: termios.h,v 1.30 2009/08/08 21:23:15 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1993, 1994 @@ -78,7 +78,7 @@ #endif #define NCCS 20 -#define _POSIX_VDISABLE ((unsigned char)'\377') +#define _POSIX_VDISABLE __CAST(unsigned char, '\377') #if defined(_NETBSD_SOURCE) #define CCEQ(val, c) (c == val ? val != _POSIX_VDISABLE : 0)