* \file
* <!--
* Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
- * This file is part of DevLib - See devlib/README for information.
+ * This file is part of DevLib - See README.devlib for information.
* -->
*
* \brief Common and handy function macros
/*#*
*#* $Log$
+ *#* Revision 1.5 2005/11/04 16:20:01 bernie
+ *#* Fix reference to README.devlib in header.
+ *#*
+ *#* Revision 1.4 2005/07/03 15:19:09 bernie
+ *#* Doxygen fix.
+ *#*
+ *#* Revision 1.3 2005/06/27 21:23:32 bernie
+ *#* ROUND_DOWN, ROUND_UP, ROUND_NEAREST: New macros.
+ *#*
*#* Revision 1.2 2005/04/11 19:10:27 bernie
*#* Include top-level headers from cfg/ subdir.
*#*
/*! Round up \a x to an even multiple of the 2's power \a pad */
#define ROUND2(x, pad) (((x) + ((pad) - 1)) & ~((pad) - 1))
+/*!
+ * \name Integer round macros.
+ *
+ * Round \a x to a multiple of \a base.
+ * \note If \a x is signed these macros generate a lot of code.
+ * \{
+ */
+#define ROUND_DOWN(x, base) ( (x) - ((x) % (base)) )
+#define ROUND_UP(x, base) ( ((x) + (base) - 1) - (((x) + (base) - 1) % (base)) )
+#define ROUND_NEAREST(x, base) ( ((x) + (base) / 2) - (((x) + (base) / 2) % (base)) )
+/* \} */
+
//! Check if \a x is an integer power of 2
#define IS_POW2(x) (!(bool)((x) & ((x)-1)))