Arch/Esp32/Components/libc/include/sys/pgmspace.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * pgmspace.h - Support for reading flash memory
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "../esp_attr.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 #define PROGMEM STORE_ATTR
20 #define PROGMEM_PSTR PROGMEM
21 #define PSTR(str) (str)
22 
23 #define PGM_P const char*
24 #define PGM_VOID_P const void*
25 
26 #define pgm_read_byte(addr) (*(const unsigned char*)(addr))
27 #define pgm_read_word(addr) (*(const unsigned short*)(addr))
28 #define pgm_read_dword(addr) (*(const unsigned long*)(addr))
29 #define pgm_read_float(addr) (*(const float*)(addr))
30 
31 #define pgm_read_byte_near(addr) pgm_read_byte(addr)
32 #define pgm_read_word_near(addr) pgm_read_word(addr)
33 #define pgm_read_dword_near(addr) pgm_read_dword(addr)
34 #define pgm_read_float_near(addr) pgm_read_float(addr)
35 #define pgm_read_byte_far(addr) pgm_read_byte(addr)
36 #define pgm_read_word_far(addr) pgm_read_word(addr)
37 #define pgm_read_dword_far(addr) pgm_read_dword(addr)
38 #define pgm_read_float_far(addr) pgm_read_float(addr)
39 
40 #define memcpy_P(dest, src, num) memcpy((dest), (src), (num))
41 #define memcmp_P(a1, b1, len) memcmp(a1, b1, len)
42 #define strlen_P(a) strlen((a))
43 #define strcpy_P(dest, src) strcpy((dest), (src))
44 #define strncpy_P(dest, src, size) strncpy((dest), (src), (size))
45 #define strcmp_P(a, b) strcmp((a), (b))
46 #define strncmp_P(str1, str2_P, size) strncmp(str1, str2_P, size)
47 #define strcasecmp_P(a, b) strcasecmp((a), (b))
48 #define strcat_P(dest, src) strcat((dest), (src))
49 #define strstr_P(a, b) strstr((a), (b))
50 #define sprintf_P(s, f, ...) m_snprintf(s, 1024, f, ##__VA_ARGS__)
51 
52 #ifdef __cplusplus
53 }
54 #endif