Botan 1.10.17
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
13namespace 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*/
21template<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*/
34template<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_right(T input, size_t rot)
Definition rotate.h:34
T rotate_left(T input, size_t rot)
Definition rotate.h:21