Botan
1.10.17
src
utils
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
Botan
Definition
algo_base.h:14
Botan::rotate_right
T rotate_right(T input, size_t rot)
Definition
rotate.h:34
Botan::rotate_left
T rotate_left(T input, size_t rot)
Definition
rotate.h:21
Generated by
1.18.0