Botan  1.11.10
rotate.h
Go to the documentation of this file.
1 /*
2 * Word Rotation Operations
3 * (C) 1999-2008 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7 
8 #ifndef BOTAN_WORD_ROTATE_H__
9 #define BOTAN_WORD_ROTATE_H__
10 
11 #include <botan/types.h>
12 
13 namespace Botan {
14 
15 /**
16 * Bit rotation left
17 * @param input the input word
18 * @param rot the number of bits to rotate
19 * @return input rotated left by rot bits
20 */
21 template<typename T> inline T rotate_left(T input, size_t rot)
22  {
23  if(rot == 0)
24  return input;
25  return static_cast<T>((input << rot) | (input >> (8*sizeof(T)-rot)));;
26  }
27 
28 /**
29 * Bit rotation right
30 * @param input the input word
31 * @param rot the number of bits to rotate
32 * @return input rotated right by rot bits
33 */
34 template<typename T> inline T rotate_right(T input, size_t rot)
35  {
36  if(rot == 0)
37  return input;
38  return static_cast<T>((input >> rot) | (input << (8*sizeof(T)-rot)));
39  }
40 
41 }
42 
43 #endif
T rotate_left(T input, size_t rot)
Definition: rotate.h:21
T rotate_right(T input, size_t rot)
Definition: rotate.h:34