summaryrefslogtreecommitdiff
path: root/include/lib/ArduinoJson/Polyfills/parseInteger.hpp
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-09-17 10:02:07 +0200
committerDaniel Friesel <derf@finalrewind.org>2018-09-17 10:02:07 +0200
commit4f6253aa9fec99260b8bb7b9b2e9003f5259b600 (patch)
tree2d0a3fdd10e258ecce5fb220547b1c43b870d6d2 /include/lib/ArduinoJson/Polyfills/parseInteger.hpp
parent30c4f72770568749b4230a6b598e3fb87a065e91 (diff)
Import arduinojson and ubjson. Only partially working at the moment
Diffstat (limited to 'include/lib/ArduinoJson/Polyfills/parseInteger.hpp')
-rw-r--r--include/lib/ArduinoJson/Polyfills/parseInteger.hpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Polyfills/parseInteger.hpp b/include/lib/ArduinoJson/Polyfills/parseInteger.hpp
new file mode 100644
index 0000000..e8f1974
--- /dev/null
+++ b/include/lib/ArduinoJson/Polyfills/parseInteger.hpp
@@ -0,0 +1,41 @@
+// ArduinoJson - arduinojson.org
+// Copyright Benoit Blanchon 2014-2018
+// MIT License
+
+#pragma once
+
+#include <stdlib.h>
+
+#include "../Configuration.hpp"
+#include "./ctype.hpp"
+
+namespace ArduinoJson {
+namespace Internals {
+template <typename T>
+T parseInteger(const char *s) {
+ if (!s) return 0; // NULL
+
+ if (*s == 't') return 1; // "true"
+
+ T result = 0;
+ bool negative_result = false;
+
+ switch (*s) {
+ case '-':
+ negative_result = true;
+ s++;
+ break;
+ case '+':
+ s++;
+ break;
+ }
+
+ while (isdigit(*s)) {
+ result = T(result * 10 + T(*s - '0'));
+ s++;
+ }
+
+ return negative_result ? T(~result + 1) : result;
+}
+}
+}