progmem_emulation.hpp 662 B

1234567891011121314151617181920212223
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2019
  3. // MIT License
  4. #include <stdint.h> // uint8_t
  5. #include <string.h> // strcmp, strlen...
  6. class __FlashStringHelper;
  7. inline const void* convertPtrToFlash(const void* s) {
  8. return reinterpret_cast<const char*>(s) + 42;
  9. }
  10. inline const void* convertFlashToPtr(const void* s) {
  11. return reinterpret_cast<const char*>(s) - 42;
  12. }
  13. #define F(X) reinterpret_cast<const __FlashStringHelper*>(convertPtrToFlash(X))
  14. #define FC(X) reinterpret_cast<const char*>(convertPtrToFlash(X))
  15. inline uint8_t pgm_read_byte(const void* p) {
  16. return *reinterpret_cast<const uint8_t*>(convertFlashToPtr(p));
  17. }