Remove obsolete file.
[bertos.git] / cfg / macros.h
index 5d363173d6327a2c570053338cda9ea980ffd28e..081b20334cff9846f610a1a8c0b9338fc26fd2d1 100755 (executable)
 
 /*#*
  *#* $Log$
+ *#* Revision 1.7  2006/02/20 14:34:58  bernie
+ *#* Use portable type checking.
+ *#*
+ *#* Revision 1.6  2006/02/10 12:36:57  bernie
+ *#* Pacify IAR warnings for side-effects.
+ *#*
  *#* Revision 1.5  2005/11/04 16:20:01  bernie
  *#* Fix reference to README.devlib in header.
  *#*
        #define MIN(a,b) ({ \
                typeof(a) _a = (a); \
                typeof(b) _b = (b); \
-               (void)(&_a == &_b); /* ensure same type */ \
+               ASSERT_TYPE_EQUAL(_a, _b); \
                (_a < _b) ? _a : _b; \
        })
        #define MAX(a,b) ({ \
                typeof(a) _a = (a); \
                typeof(b) _b = (b); \
-               (void)(&_a == &_b); /* ensure same type */ \
+               ASSERT_TYPE_EQUAL(_a, _b); \
                (_a > _b) ? _a : _b; \
        })
 #else /* !(COMPILER_STATEMENT_EXPRESSIONS && COMPILER_TYPEOF) */
         */
        #define SWAP(a, b) \
                do { \
-                       (void)(&(a) == &(b)); /* type check */ \
                        typeof(a) tmp; \
+                       ASSERT_TYPE_EQUAL(a, b); \
                        tmp = (a); \
                        (a) = (b); \
                        (b) = tmp; \
                } while (0)
 #else /* !COMPILER_TYPEOF */
        /* Sub-optimal implementation that only works with integral types. */
-       #define SWAP(a, b) ((a) ^= (b) ^= (a) ^= (b))
+       #define SWAP(a, b) \
+               do { \
+                       (a) ^= (b); \
+                       (b) ^= (a); \
+                       (a) ^= (b); \
+               } while (0)
+
 #endif /* COMPILER_TYPEOF */
 
 #ifndef BV