summaryrefslogtreecommitdiff
path: root/include/lib/ArduinoJson/Polyfills/limits.hpp
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2021-05-12 09:12:09 +0200
committerDaniel Friesel <daniel.friesel@uos.de>2021-05-12 09:12:09 +0200
commit39895a677e5d370824e702cfe90ebc67737b8482 (patch)
treeff5b4cc9e373d33a795d50d9333e05549bd9f2b8 /include/lib/ArduinoJson/Polyfills/limits.hpp
parent42e7fdf01c3a5701bb51e93ad6c650c3dbbc5450 (diff)
import ArduinoJson 6.18.0
Diffstat (limited to 'include/lib/ArduinoJson/Polyfills/limits.hpp')
-rw-r--r--include/lib/ArduinoJson/Polyfills/limits.hpp45
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