move rotate_left() function away from the public header.
[ginac.git] / ginac / utils.h
index ebfc9804314a789d6657609ac1b80a9942a03a0c..1cac625624501ab1725d870afbe98ac0a469fd01 100644 (file)
@@ -44,6 +44,13 @@ class dunno {};
 
 unsigned log2(unsigned n);
 
+/** Rotate bits of unsigned value by one bit to the left.
+  * This can be necesary if the user wants to define its own hashes. */
+inline unsigned rotate_left(unsigned n)
+{
+       return (n & 0x80000000U) ? (n << 1 | 0x00000001U) : (n << 1);
+}
+
 /** Compare two pointers (just to establish some sort of canonical order).
  *  @return -1, 0, or 1 */
 template <class T>