28 #define __PGMSPACE_H_ 1
33 #define PGM_P const char *
34 #define PSTR(str) (str)
36 #define _SFR_BYTE(n) (n)
38 typedef void prog_void;
39 typedef char prog_char;
40 typedef unsigned char prog_uchar;
41 typedef int8_t prog_int8_t;
42 typedef uint8_t prog_uint8_t;
43 typedef int16_t prog_int16_t;
44 typedef uint16_t prog_uint16_t;
45 typedef int32_t prog_int32_t;
46 typedef uint32_t prog_uint32_t;
47 typedef int64_t prog_int64_t;
48 typedef uint64_t prog_uint64_t;
50 typedef const void* int_farptr_t;
51 typedef const void* uint_farptr_t;
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))
59 #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))
62 #define strcmp_P(a, b) strcmp((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))
69 #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))
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))
99 #define sprintf_P(s, f, ...) sprintf((s), (f), __VA_ARGS__)
100 #define snprintf_P(s, f, ...) snprintf((s), (f), __VA_ARGS__)
102 #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
103 #define pgm_read_word(addr) (*(const unsigned short *)(addr))
104 #define pgm_read_dword(addr) (*(const unsigned long *)(addr))
105 #define pgm_read_float(addr) (*(const float *)(addr))
106 #define pgm_read_ptr(addr) (*(void *const *)(addr))
108 #define pgm_read_byte_near(addr) pgm_read_byte(addr)
109 #define pgm_read_word_near(addr) pgm_read_word(addr)
110 #define pgm_read_dword_near(addr) pgm_read_dword(addr)
111 #define pgm_read_float_near(addr) pgm_read_float(addr)
112 #define pgm_read_ptr_near(addr) pgm_read_ptr(addr)
114 #define pgm_read_byte_far(addr) pgm_read_byte(addr)
115 #define pgm_read_word_far(addr) pgm_read_word(addr)
116 #define pgm_read_dword_far(addr) pgm_read_dword(addr)
117 #define pgm_read_float_far(addr) pgm_read_float(addr)
118 #define pgm_read_ptr_far(addr) pgm_read_ptr(addr)
120 #define pgm_get_far_address(addr) (&(addr))