Skip to content

Commit a1739d0

Browse files
committed
Added more pgmspace.h equivalents
1 parent e676868 commit a1739d0

File tree

1 file changed

+54
-3
lines changed

1 file changed

+54
-3
lines changed

cores/arduino/avr/pgmspace.h

+54-3
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,78 @@ typedef int16_t prog_int16_t;
4444
typedef uint16_t prog_uint16_t;
4545
typedef int32_t prog_int32_t;
4646
typedef uint32_t prog_uint32_t;
47+
typedef int32_t prog_int64_t;
48+
typedef uint32_t prog_uint64_t;
4749

48-
#define memcpy_P(dest, src, num) memcpy((dest), (src), (num))
49-
#define strcpy_P(dest, src) strcpy((dest), (src))
50+
typedef const void* int_farptr_t;
51+
typedef const void* uint_farptr_t;
52+
53+
#define memchr_P(s, c, n) memchr((s), (c), (n))
54+
#define memcmp_P(s1, s2, n) memcmp((s1), (s2), (n))
55+
#define memccpy_P(dest, src, c, n) memccpy((dest), (src), (c), (n))
56+
#define memcpy_P(dest, src, n) memcpy((dest), (src), (n))
57+
#define memmem_P(haystack, haystacklen, needle, needlelen) memmem((haystack), (haystacklen), (needle), (needlelen))
58+
#define memrchr_P(s, c, n) memrchr((s), (c), (n))
5059
#define strcat_P(dest, src) strcat((dest), (src))
60+
#define strchr_P(s, c) strchr((s), (c))
61+
#define strchrnul_P(s, c) strchrnul((s), (c))
5162
#define strcmp_P(a, b) strcmp((a), (b))
52-
#define strstr_P(a, b) strstr((a), (b))
63+
#define strcpy_P(dest, src) strcpy((dest), (src))
64+
#define strcasecmp_P(s1, s2) strcasecmp((s1), (s2))
65+
#define strcasestr_P(haystack, needle) strcasestr((haystack), (needle))
66+
#define strcspn_P(s, accept) strcspn((s), (accept))
67+
#define strlcat_P(s1, s2, n) strlcat((s1), (s2), (n))
68+
#define strlcpy_P(s1, s2, n) strlcpy((s1), (s2), (n))
5369
#define strlen_P(a) strlen((a))
70+
#define strnlen_P(s, n) strnlen((s), (n))
71+
#define strncmp_P(s1, s2, n) strncmp((s1), (s2), (n))
72+
#define strncasecmp_P(s1, s2, n) strncasecmp((s1), (s2), (n))
73+
#define strncat_P(s1, s2, n) strncat((s1), (s2), (n))
74+
#define strncpy_P(s1, s2, n) strncpy((s1), (s2), (n))
75+
#define strpbrk_P(s, accept) strpbrk((s), (accept))
76+
#define strrchr_P(s, c) strrchr((s), (c))
77+
#define strsep_P(sp, delim) strsep((sp), (delim))
78+
#define strspn_P(s, accept) strspn((s), (accept))
79+
#define strstr_P(a, b) strstr((a), (b))
80+
#define strtok_P(s, delim) strtok((s), (delim))
81+
#define strtok_rP(s, delim, last) strtok((s), (delim), (last))
82+
83+
#define strlen_PF(a) strlen((a))
84+
#define strnlen_PF(src, len) strnlen((src), (len))
85+
#define memcpy_PF(dest, src, len) memcpy((dest), (src), (len))
86+
#define strcpy_PF(dest, src) strcpy((dest), (src))
87+
#define strncpy_PF(dest, src, len) strncpy((dest), (src), (len))
88+
#define strcat_PF(dest, src) strcat((dest), (src))
89+
#define strlcat_PF(dest, src, len) strlcat((dest), (src), (len))
90+
#define strncat_PF(dest, src, len) strncat((dest), (src), (len))
91+
#define strcmp_PF(s1, s2) strcmp((s1), (s2))
92+
#define strncmp_PF(s1, s2, n) strncmp((s1), (s2), (n))
93+
#define strcasecmp_PF(s1, s2) strcasecmp((s1), (s2))
94+
#define strncasecmp_PF(s1, s2, n) strncasecmp((s1), (s2), (n))
95+
#define strstr_PF(s1, s2) strstr((s1), (s2))
96+
#define strlcpy_PF(dest, src, n) strlcpy((dest), (src), (n))
97+
#define memcmp_PF(s1, s2, n) memcmp((s1), (s2), (n))
98+
5499
#define sprintf_P(s, f, ...) sprintf((s), (f), __VA_ARGS__)
55100

56101
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
57102
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
58103
#define pgm_read_dword(addr) (*(const unsigned long *)(addr))
59104
#define pgm_read_float(addr) (*(const float *)(addr))
105+
#define pgm_read_ptr(addr) (*(const void *)(addr))
60106

61107
#define pgm_read_byte_near(addr) pgm_read_byte(addr)
62108
#define pgm_read_word_near(addr) pgm_read_word(addr)
63109
#define pgm_read_dword_near(addr) pgm_read_dword(addr)
64110
#define pgm_read_float_near(addr) pgm_read_float(addr)
111+
#define pgm_read_ptr_near(addr) pgm_read_ptr(addr)
112+
65113
#define pgm_read_byte_far(addr) pgm_read_byte(addr)
66114
#define pgm_read_word_far(addr) pgm_read_word(addr)
67115
#define pgm_read_dword_far(addr) pgm_read_dword(addr)
68116
#define pgm_read_float_far(addr) pgm_read_float(addr)
117+
#define pgm_read_ptr_far(addr) pgm_read_ptr(addr)
118+
119+
#define pgm_get_far_address(addr) (&(addr))
69120

70121
#endif

0 commit comments

Comments
 (0)