mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // ArduinoJson - https://arduinojson.org
 | |
| // Copyright © 2014-2022, Benoit BLANCHON
 | |
| // MIT License
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <ArduinoJson/Polyfills/assert.hpp>
 | |
| #include <ArduinoJson/Variant/VariantData.hpp>
 | |
| 
 | |
| namespace ARDUINOJSON_NAMESPACE {
 | |
| 
 | |
| struct SlotKeySetter {
 | |
|   SlotKeySetter(VariantSlot* instance) : _instance(instance) {}
 | |
| 
 | |
|   template <typename TStoredString>
 | |
|   void operator()(TStoredString s) {
 | |
|     if (!s)
 | |
|       return;
 | |
|     ARDUINOJSON_ASSERT(_instance != 0);
 | |
|     _instance->setKey(s);
 | |
|   }
 | |
| 
 | |
|   VariantSlot* _instance;
 | |
| };
 | |
| 
 | |
| template <typename TAdaptedString, typename TStoragePolicy>
 | |
| inline bool slotSetKey(VariantSlot* var, TAdaptedString key, MemoryPool* pool,
 | |
|                        TStoragePolicy storage) {
 | |
|   if (!var)
 | |
|     return false;
 | |
|   return storage.store(key, pool, SlotKeySetter(var));
 | |
| }
 | |
| 
 | |
| inline size_t slotSize(const VariantSlot* var) {
 | |
|   size_t n = 0;
 | |
|   while (var) {
 | |
|     n++;
 | |
|     var = var->next();
 | |
|   }
 | |
|   return n;
 | |
| }
 | |
| 
 | |
| inline VariantData* slotData(VariantSlot* slot) {
 | |
|   return reinterpret_cast<VariantData*>(slot);
 | |
| }
 | |
| }  // namespace ARDUINOJSON_NAMESPACE
 |