_bit_rotate.h

Go to the documentation of this file.
00001 
00028 /* === S T A R T =========================================================== */
00029 
00030 #ifndef __ETL_BIT_ROTATE_H
00031 #define __ETL_BIT_ROTATE_H
00032 
00033 /* === H E A D E R S ======================================================= */
00034 
00035 /* === M A C R O S ========================================================= */
00036 
00037 /* === T Y P E D E F S ===================================================== */
00038 
00039 /* === C L A S S E S & S T R U C T S ======================================= */
00040 
00041 _ETL_BEGIN_NAMESPACE
00042 
00043 template <typename T> T
00044 rot_left(const T &val, const int &bits=1)
00045 {
00046     return (T)( ((unsigned)val<<bits)+((unsigned)val>>(sizeof(T)*8-bits)) );
00047 }
00048 
00049 template <typename T> T
00050 rot_right(const T &val, const int &bits=1)
00051 {
00052     return (T)( ((unsigned)val>>bits)+((unsigned)val<<(sizeof(T)*8-bits)) );
00053 }
00054 
00055 _ETL_END_NAMESPACE
00056 
00057 /* === E X T E R N S ======================================================= */
00058 
00059 /* === E N D =============================================================== */
00060 
00061 #endif
00062 

Generated on Fri Jun 22 14:33:39 2007 for ETL by  doxygen 1.5.2