Added fallbacks strlen_P, strncmp_P, strcmp_P and memcpy_P (fixes #1073)

This commit is contained in:
Benoit Blanchon
2019-08-21 09:31:53 +02:00
parent dcca4214f5
commit f00dfd7bfe
6 changed files with 107 additions and 22 deletions

View File

@ -7,9 +7,6 @@
class __FlashStringHelper;
typedef char prog_char;
typedef void prog_void;
inline const void* convertPtrToFlash(const void* s) {
return reinterpret_cast<const char*>(s) + 42;
}
@ -19,23 +16,8 @@ inline const void* convertFlashToPtr(const void* s) {
}
#define F(X) reinterpret_cast<const __FlashStringHelper*>(convertPtrToFlash(X))
#define FC(X) reinterpret_cast<const char*>(convertPtrToFlash(X))
inline uint8_t pgm_read_byte_near(const void* p) {
inline uint8_t pgm_read_byte(const void* p) {
return *reinterpret_cast<const uint8_t*>(convertFlashToPtr(p));
}
inline void* memcpy_P(void* a, const prog_void* b, size_t n) {
return memcpy(a, convertFlashToPtr(b), n);
}
inline int strcmp_P(const char* a, const prog_char* b) {
return strcmp(a, reinterpret_cast<const char*>(convertFlashToPtr(b)));
}
inline int strncmp_P(const char* a, const prog_char* b, size_t n) {
return strncmp(a, reinterpret_cast<const char*>(convertFlashToPtr(b)), n);
}
inline size_t strlen_P(const prog_char* s) {
return strlen(reinterpret_cast<const char*>(convertFlashToPtr(s)));
}