Minh Nguyen / ArduinoJson
Committer:
khaiminhvn
Date:
Fri Mar 19 19:30:50 2021 +0000
Revision:
0:18ba3960b5dd
removed extras

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaiminhvn 0:18ba3960b5dd 1 // ArduinoJson - arduinojson.org
khaiminhvn 0:18ba3960b5dd 2 // Copyright Benoit Blanchon 2014-2021
khaiminhvn 0:18ba3960b5dd 3 // MIT License
khaiminhvn 0:18ba3960b5dd 4
khaiminhvn 0:18ba3960b5dd 5 #pragma once
khaiminhvn 0:18ba3960b5dd 6
khaiminhvn 0:18ba3960b5dd 7 #include <ArduinoJson/Namespace.hpp>
khaiminhvn 0:18ba3960b5dd 8
khaiminhvn 0:18ba3960b5dd 9 namespace ARDUINOJSON_NAMESPACE {
khaiminhvn 0:18ba3960b5dd 10
khaiminhvn 0:18ba3960b5dd 11 // A Print implementation that allows to write in a char[]
khaiminhvn 0:18ba3960b5dd 12 class StaticStringWriter {
khaiminhvn 0:18ba3960b5dd 13 public:
khaiminhvn 0:18ba3960b5dd 14 StaticStringWriter(char *buf, size_t size) : end(buf + size - 1), p(buf) {
khaiminhvn 0:18ba3960b5dd 15 *p = '\0';
khaiminhvn 0:18ba3960b5dd 16 }
khaiminhvn 0:18ba3960b5dd 17
khaiminhvn 0:18ba3960b5dd 18 size_t write(uint8_t c) {
khaiminhvn 0:18ba3960b5dd 19 if (p >= end)
khaiminhvn 0:18ba3960b5dd 20 return 0;
khaiminhvn 0:18ba3960b5dd 21 *p++ = static_cast<char>(c);
khaiminhvn 0:18ba3960b5dd 22 *p = '\0';
khaiminhvn 0:18ba3960b5dd 23 return 1;
khaiminhvn 0:18ba3960b5dd 24 }
khaiminhvn 0:18ba3960b5dd 25
khaiminhvn 0:18ba3960b5dd 26 size_t write(const uint8_t *s, size_t n) {
khaiminhvn 0:18ba3960b5dd 27 char *begin = p;
khaiminhvn 0:18ba3960b5dd 28 while (p < end && n > 0) {
khaiminhvn 0:18ba3960b5dd 29 *p++ = static_cast<char>(*s++);
khaiminhvn 0:18ba3960b5dd 30 n--;
khaiminhvn 0:18ba3960b5dd 31 }
khaiminhvn 0:18ba3960b5dd 32 *p = '\0';
khaiminhvn 0:18ba3960b5dd 33 return size_t(p - begin);
khaiminhvn 0:18ba3960b5dd 34 }
khaiminhvn 0:18ba3960b5dd 35
khaiminhvn 0:18ba3960b5dd 36 private:
khaiminhvn 0:18ba3960b5dd 37 char *end;
khaiminhvn 0:18ba3960b5dd 38 char *p;
khaiminhvn 0:18ba3960b5dd 39 };
khaiminhvn 0:18ba3960b5dd 40 } // namespace ARDUINOJSON_NAMESPACE