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)

Reply via email to