Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
StringCopier.hpp
00001 // ArduinoJson - arduinojson.org 00002 // Copyright Benoit Blanchon 2014-2021 00003 // MIT License 00004 00005 #pragma once 00006 00007 #include <ArduinoJson/Memory/MemoryPool.hpp> 00008 00009 namespace ARDUINOJSON_NAMESPACE { 00010 00011 class StringCopier { 00012 public: 00013 StringCopier(MemoryPool& pool) : _pool(&pool) {} 00014 00015 void startString() { 00016 _pool->getFreeZone(&_ptr, &_capacity); 00017 _size = 0; 00018 } 00019 00020 const char* save() { 00021 ARDUINOJSON_ASSERT(_ptr); 00022 return _pool->saveStringFromFreeZone(_size); 00023 } 00024 00025 void append(const char* s) { 00026 while (*s) append(*s++); 00027 } 00028 00029 void append(const char* s, size_t n) { 00030 while (n-- > 0) append(*s++); 00031 } 00032 00033 void append(char c) { 00034 if (!_ptr) 00035 return; 00036 00037 if (_size >= _capacity) { 00038 _ptr = 0; 00039 _pool->markAsOverflowed(); 00040 return; 00041 } 00042 00043 _ptr[_size++] = c; 00044 } 00045 00046 bool isValid() { 00047 return _ptr != 0; 00048 } 00049 00050 const char* c_str() { 00051 return _ptr; 00052 } 00053 00054 typedef storage_policies::store_by_copy storage_policy; 00055 00056 private: 00057 MemoryPool* _pool; 00058 char* _ptr; 00059 size_t _size; 00060 size_t _capacity; 00061 }; 00062 } // namespace ARDUINOJSON_NAMESPACE
Generated on Wed Jul 13 2022 01:10:36 by
1.7.2