Coverage Report

Created: 2020-06-30 13:58

/src/botan/build/include/botan/internal/rounding.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* Integer Rounding Functions
3
* (C) 1999-2007 Jack Lloyd
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#ifndef BOTAN_ROUNDING_H_
9
#define BOTAN_ROUNDING_H_
10
11
#include <botan/types.h>
12
13
namespace Botan {
14
15
/**
16
* Round up
17
* @param n a non-negative integer
18
* @param align_to the alignment boundary
19
* @return n rounded up to a multiple of align_to
20
*/
21
inline size_t round_up(size_t n, size_t align_to)
22
1.36M
   {
23
1.36M
   BOTAN_ARG_CHECK(align_to != 0, "align_to must not be 0");
24
1.36M
25
1.36M
   if(n % align_to)
26
1.00M
      n += align_to - (n % align_to);
27
1.36M
   return n;
28
1.36M
   }
29
30
/**
31
* Round down
32
* @param n an integer
33
* @param align_to the alignment boundary
34
* @return n rounded down to a multiple of align_to
35
*/
36
template<typename T>
37
inline constexpr T round_down(T n, T align_to)
38
   {
39
   return (align_to == 0) ? n : (n - (n % align_to));
40
   }
41
42
/**
43
* Clamp
44
*/
45
inline size_t clamp(size_t n, size_t lower_bound, size_t upper_bound)
46
0
   {
47
0
   if(n < lower_bound)
48
0
      return lower_bound;
49
0
   if(n > upper_bound)
50
0
      return upper_bound;
51
0
   return n;
52
0
   }
53
54
}
55
56
#endif