Przeglądaj źródła

Removed template parameter of CharPointerReader and StringMover

Benoit Blanchon 7 lat temu
rodzic
commit
637f7a5bfa

+ 14 - 17
src/ArduinoJson/Deserialization/CharPointerReader.hpp

@@ -6,33 +6,30 @@
 
 namespace ARDUINOJSON_NAMESPACE {
 
-template <typename TChar>
 class UnsafeCharPointerReader {
-  const TChar* _ptr;
+  const char* _ptr;
 
  public:
-  explicit UnsafeCharPointerReader(const TChar* ptr)
-      : _ptr(ptr ? ptr : reinterpret_cast<const TChar*>("")) {}
+  explicit UnsafeCharPointerReader(const char* ptr)
+      : _ptr(ptr ? ptr : reinterpret_cast<const char*>("")) {}
 
   char read() {
     return static_cast<char>(*_ptr++);
   }
 
   bool ended() const {
-    // we cannot know
+    // we cannot know, that's why it's unsafe
     return false;
   }
 };
 
-template <typename TChar>
 class SafeCharPointerReader {
-  const TChar* _ptr;
-  const TChar* _end;
+  const char* _ptr;
+  const char* _end;
 
  public:
-  explicit SafeCharPointerReader(const TChar* ptr, size_t len)
-      : _ptr(ptr ? ptr : reinterpret_cast<const TChar*>("")),
-        _end(_ptr + len) {}
+  explicit SafeCharPointerReader(const char* ptr, size_t len)
+      : _ptr(ptr ? ptr : reinterpret_cast<const char*>("")), _end(_ptr + len) {}
 
   char read() {
     return static_cast<char>(*_ptr++);
@@ -44,18 +41,18 @@ class SafeCharPointerReader {
 };
 
 template <typename TChar>
-inline UnsafeCharPointerReader<TChar> makeReader(TChar* input) {
-  return UnsafeCharPointerReader<TChar>(input);
+inline UnsafeCharPointerReader makeReader(TChar* input) {
+  return UnsafeCharPointerReader(reinterpret_cast<const char*>(input));
 }
 
 template <typename TChar>
-inline SafeCharPointerReader<TChar> makeReader(TChar* input, size_t n) {
-  return SafeCharPointerReader<TChar>(input, n);
+inline SafeCharPointerReader makeReader(TChar* input, size_t n) {
+  return SafeCharPointerReader(reinterpret_cast<const char*>(input), n);
 }
 
 #if ARDUINOJSON_ENABLE_ARDUINO_STRING
-inline SafeCharPointerReader<char> makeReader(const String& input) {
-  return SafeCharPointerReader<char>(input.c_str(), input.length());
+inline SafeCharPointerReader makeReader(const String& input) {
+  return SafeCharPointerReader(input.c_str(), input.length());
 }
 #endif
 

+ 6 - 7
src/ArduinoJson/StringStorage/StringMover.hpp

@@ -6,17 +6,16 @@
 
 namespace ARDUINOJSON_NAMESPACE {
 
-template <typename TChar>
 class StringMover {
  public:
   class StringBuilder {
    public:
     typedef ZeroTerminatedRamStringConst StringType;
 
-    StringBuilder(TChar** ptr) : _writePtr(ptr), _startPtr(*ptr) {}
+    StringBuilder(char** ptr) : _writePtr(ptr), _startPtr(*ptr) {}
 
     void append(char c) {
-      *(*_writePtr)++ = TChar(c);
+      *(*_writePtr)++ = char(c);
     }
 
     StringType complete() const {
@@ -25,17 +24,17 @@ class StringMover {
     }
 
    private:
-    TChar** _writePtr;
-    TChar* _startPtr;
+    char** _writePtr;
+    char* _startPtr;
   };
 
-  StringMover(TChar* ptr) : _ptr(ptr) {}
+  StringMover(char* ptr) : _ptr(ptr) {}
 
   StringBuilder startString() {
     return StringBuilder(&_ptr);
   }
 
  private:
-  TChar* _ptr;
+  char* _ptr;
 };
 }  // namespace ARDUINOJSON_NAMESPACE

+ 2 - 2
src/ArduinoJson/StringStorage/StringStorage.hpp

@@ -21,10 +21,10 @@ struct StringStorage {
 template <typename TChar>
 struct StringStorage<TChar*,
                      typename enable_if<!is_const<TChar>::value>::type> {
-  typedef StringMover<TChar> type;
+  typedef StringMover type;
 
   static type create(MemoryPool&, TChar* input) {
-    return type(input);
+    return type(reinterpret_cast<char*>(input));
   }
 };