diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2021-05-12 09:12:09 +0200 |
commit | 39895a677e5d370824e702cfe90ebc67737b8482 (patch) | |
tree | ff5b4cc9e373d33a795d50d9333e05549bd9f2b8 /include/lib/ArduinoJson/Polyfills/limits.hpp | |
parent | 42e7fdf01c3a5701bb51e93ad6c650c3dbbc5450 (diff) |
import ArduinoJson 6.18.0
Diffstat (limited to 'include/lib/ArduinoJson/Polyfills/limits.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Polyfills/limits.hpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Polyfills/limits.hpp b/include/lib/ArduinoJson/Polyfills/limits.hpp new file mode 100644 index 0000000..8004828 --- /dev/null +++ b/include/lib/ArduinoJson/Polyfills/limits.hpp @@ -0,0 +1,45 @@ +// ArduinoJson - https://arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#pragma once + +#include "type_traits.hpp" + +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4310) +#endif + +namespace ARDUINOJSON_NAMESPACE { + +// Differs from standard because we can't use the symbols "min" and "max" +template <typename T, typename Enable = void> +struct numeric_limits; + +template <typename T> +struct numeric_limits<T, typename enable_if<is_unsigned<T>::value>::type> { + static T lowest() { + return 0; + } + static T highest() { + return T(-1); + } +}; + +template <typename T> +struct numeric_limits< + T, typename enable_if<is_integral<T>::value && is_signed<T>::value>::type> { + static T lowest() { + return T(T(1) << (sizeof(T) * 8 - 1)); + } + static T highest() { + return T(~lowest()); + } +}; + +} // namespace ARDUINOJSON_NAMESPACE + +#ifdef _MSC_VER +#pragma warning(pop) +#endif |