/src/botan/build/include/botan/internal/rounding.h
| Line | Count | Source | 
| 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.54M |    { | 
| 23 | 1.54M |    BOTAN_ARG_CHECK(align_to != 0, "align_to must not be 0"); | 
| 24 |  |  | 
| 25 | 1.54M |    if(n % align_to) | 
| 26 | 1.13M |       n += align_to - (n % align_to); | 
| 27 | 1.54M |    return n; | 
| 28 | 1.54M |    } | 
| 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 |  |  | 
| 44 |  | #endif |