this is using the mbed os version 5-13-1
source/Bounded.h@75:08eff6258e1b, 2019-03-14 (annotated)
- Committer:
- ocomeni
- Date:
- Thu Mar 14 21:34:06 2019 +0000
- Revision:
- 75:08eff6258e1b
Ble Security example now working!
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ocomeni | 75:08eff6258e1b | 1 | /* mbed Microcontroller Library |
| ocomeni | 75:08eff6258e1b | 2 | * Copyright (c) 2018 ARM Limited |
| ocomeni | 75:08eff6258e1b | 3 | * |
| ocomeni | 75:08eff6258e1b | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| ocomeni | 75:08eff6258e1b | 5 | * you may not use this file except in compliance with the License. |
| ocomeni | 75:08eff6258e1b | 6 | * You may obtain a copy of the License at |
| ocomeni | 75:08eff6258e1b | 7 | * |
| ocomeni | 75:08eff6258e1b | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| ocomeni | 75:08eff6258e1b | 9 | * |
| ocomeni | 75:08eff6258e1b | 10 | * Unless required by applicable law or agreed to in writing, software |
| ocomeni | 75:08eff6258e1b | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| ocomeni | 75:08eff6258e1b | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ocomeni | 75:08eff6258e1b | 13 | * See the License for the specific language governing permissions and |
| ocomeni | 75:08eff6258e1b | 14 | * limitations under the License. |
| ocomeni | 75:08eff6258e1b | 15 | */ |
| ocomeni | 75:08eff6258e1b | 16 | |
| ocomeni | 75:08eff6258e1b | 17 | #ifndef BLE_COMMON_BOUNDED_H_ |
| ocomeni | 75:08eff6258e1b | 18 | #define BLE_COMMON_BOUNDED_H_ |
| ocomeni | 75:08eff6258e1b | 19 | |
| ocomeni | 75:08eff6258e1b | 20 | #include <stdint.h> |
| ocomeni | 75:08eff6258e1b | 21 | |
| ocomeni | 75:08eff6258e1b | 22 | namespace ble { |
| ocomeni | 75:08eff6258e1b | 23 | |
| ocomeni | 75:08eff6258e1b | 24 | /** |
| ocomeni | 75:08eff6258e1b | 25 | * Restrict values of an integer type to a defined range. |
| ocomeni | 75:08eff6258e1b | 26 | * |
| ocomeni | 75:08eff6258e1b | 27 | * The range is a closed interval that includes its left-bound (Min) and |
| ocomeni | 75:08eff6258e1b | 28 | * right-bound value (Max). |
| ocomeni | 75:08eff6258e1b | 29 | * |
| ocomeni | 75:08eff6258e1b | 30 | * @tparam Rep The C++ integer type used to represent the values. |
| ocomeni | 75:08eff6258e1b | 31 | * @tparam Min Minimum value allowed. |
| ocomeni | 75:08eff6258e1b | 32 | * @tparam Max Maximum value allowed. |
| ocomeni | 75:08eff6258e1b | 33 | */ |
| ocomeni | 75:08eff6258e1b | 34 | template<typename Rep, Rep Min, Rep Max> |
| ocomeni | 75:08eff6258e1b | 35 | struct Bounded { |
| ocomeni | 75:08eff6258e1b | 36 | /** |
| ocomeni | 75:08eff6258e1b | 37 | * Construct a bounded integer. |
| ocomeni | 75:08eff6258e1b | 38 | * |
| ocomeni | 75:08eff6258e1b | 39 | * If v is out of the range [Min : Max], then if it is less than Min, the |
| ocomeni | 75:08eff6258e1b | 40 | * value of the bounded integer will be Min. If it greater than Max, then |
| ocomeni | 75:08eff6258e1b | 41 | * the value of the bounded integer will be Max. |
| ocomeni | 75:08eff6258e1b | 42 | * |
| ocomeni | 75:08eff6258e1b | 43 | * @param v The value to store. |
| ocomeni | 75:08eff6258e1b | 44 | */ |
| ocomeni | 75:08eff6258e1b | 45 | Bounded(Rep v) : _value(v) |
| ocomeni | 75:08eff6258e1b | 46 | { |
| ocomeni | 75:08eff6258e1b | 47 | if (v < Min) { |
| ocomeni | 75:08eff6258e1b | 48 | _value = v; |
| ocomeni | 75:08eff6258e1b | 49 | } else if (v > Max) { |
| ocomeni | 75:08eff6258e1b | 50 | _value = v; |
| ocomeni | 75:08eff6258e1b | 51 | } |
| ocomeni | 75:08eff6258e1b | 52 | } |
| ocomeni | 75:08eff6258e1b | 53 | |
| ocomeni | 75:08eff6258e1b | 54 | /** |
| ocomeni | 75:08eff6258e1b | 55 | * Access the inner value. |
| ocomeni | 75:08eff6258e1b | 56 | * |
| ocomeni | 75:08eff6258e1b | 57 | * @return The current value. |
| ocomeni | 75:08eff6258e1b | 58 | */ |
| ocomeni | 75:08eff6258e1b | 59 | Rep value() const |
| ocomeni | 75:08eff6258e1b | 60 | { |
| ocomeni | 75:08eff6258e1b | 61 | return _value; |
| ocomeni | 75:08eff6258e1b | 62 | } |
| ocomeni | 75:08eff6258e1b | 63 | |
| ocomeni | 75:08eff6258e1b | 64 | /** |
| ocomeni | 75:08eff6258e1b | 65 | * The left-bound value. |
| ocomeni | 75:08eff6258e1b | 66 | * |
| ocomeni | 75:08eff6258e1b | 67 | * @return The lowest value that this type can represent |
| ocomeni | 75:08eff6258e1b | 68 | */ |
| ocomeni | 75:08eff6258e1b | 69 | static Rep min() |
| ocomeni | 75:08eff6258e1b | 70 | { |
| ocomeni | 75:08eff6258e1b | 71 | return Min; |
| ocomeni | 75:08eff6258e1b | 72 | } |
| ocomeni | 75:08eff6258e1b | 73 | |
| ocomeni | 75:08eff6258e1b | 74 | /** |
| ocomeni | 75:08eff6258e1b | 75 | * The right-bound value. |
| ocomeni | 75:08eff6258e1b | 76 | * |
| ocomeni | 75:08eff6258e1b | 77 | * @return The highest value that this type can represent |
| ocomeni | 75:08eff6258e1b | 78 | */ |
| ocomeni | 75:08eff6258e1b | 79 | static Rep max() |
| ocomeni | 75:08eff6258e1b | 80 | { |
| ocomeni | 75:08eff6258e1b | 81 | return Max; |
| ocomeni | 75:08eff6258e1b | 82 | } |
| ocomeni | 75:08eff6258e1b | 83 | |
| ocomeni | 75:08eff6258e1b | 84 | /** |
| ocomeni | 75:08eff6258e1b | 85 | * The left-bound value. |
| ocomeni | 75:08eff6258e1b | 86 | */ |
| ocomeni | 75:08eff6258e1b | 87 | static const Rep MIN = Min; |
| ocomeni | 75:08eff6258e1b | 88 | |
| ocomeni | 75:08eff6258e1b | 89 | /** |
| ocomeni | 75:08eff6258e1b | 90 | * The right-bound value. |
| ocomeni | 75:08eff6258e1b | 91 | */ |
| ocomeni | 75:08eff6258e1b | 92 | static const Rep MAX = Max; |
| ocomeni | 75:08eff6258e1b | 93 | |
| ocomeni | 75:08eff6258e1b | 94 | private: |
| ocomeni | 75:08eff6258e1b | 95 | Rep _value; |
| ocomeni | 75:08eff6258e1b | 96 | }; |
| ocomeni | 75:08eff6258e1b | 97 | |
| ocomeni | 75:08eff6258e1b | 98 | /* ---------------------- Static variable initialization -------------------- */ |
| ocomeni | 75:08eff6258e1b | 99 | |
| ocomeni | 75:08eff6258e1b | 100 | template<typename T, T Min, T Max> |
| ocomeni | 75:08eff6258e1b | 101 | const T Bounded<T, Min, Max>::MIN; |
| ocomeni | 75:08eff6258e1b | 102 | |
| ocomeni | 75:08eff6258e1b | 103 | template<typename T, T Min, T Max> |
| ocomeni | 75:08eff6258e1b | 104 | const T Bounded<T, Min, Max>::MAX; |
| ocomeni | 75:08eff6258e1b | 105 | |
| ocomeni | 75:08eff6258e1b | 106 | } // namespace ble |
| ocomeni | 75:08eff6258e1b | 107 | |
| ocomeni | 75:08eff6258e1b | 108 | #endif //BLE_COMMON_BOUNDED_H_ |