@@ -44,27 +44,78 @@ typedef int16_t prog_int16_t;
4444typedef uint16_t prog_uint16_t ;
4545typedef int32_t prog_int32_t ;
4646typedef uint32_t prog_uint32_t ;
47+ typedef int64_t prog_int64_t ;
48+ typedef uint64_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