@@ -41,28 +41,79 @@ typedef int16_t prog_int16_t;
4141typedef uint16_t prog_uint16_t ;
4242typedef int32_t prog_int32_t ;
4343typedef uint32_t prog_uint32_t ;
44+ typedef int64_t prog_int64_t ;
45+ typedef uint64_t prog_uint64_t ;
4446
45- #define memcpy_P (dest , src , num ) memcpy((dest), (src), (num))
46- #define strcpy_P (dest , src ) strcpy((dest), (src))
47+ typedef const void * int_farptr_t ;
48+ typedef const void * uint_farptr_t ;
49+
50+ #define memchr_P (s , c , n ) memchr((s), (c), (n))
51+ #define memcmp_P (s1 , s2 , n ) memcmp((s1), (s2), (n))
52+ #define memccpy_P (dest , src , c , n ) memccpy((dest), (src), (c), (n))
53+ #define memcpy_P (dest , src , n ) memcpy((dest), (src), (n))
54+ #define memmem_P (haystack , haystacklen , needle , needlelen ) memmem((haystack), (haystacklen), (needle), (needlelen))
55+ #define memrchr_P (s , c , n ) memrchr((s), (c), (n))
4756#define strcat_P (dest , src ) strcat((dest), (src))
57+ #define strchr_P (s , c ) strchr((s), (c))
58+ #define strchrnul_P (s , c ) strchrnul((s), (c))
4859#define strcmp_P (a , b ) strcmp((a), (b))
60+ #define strcpy_P (dest , src ) strcpy((dest), (src))
61+ #define strcasecmp_P (s1 , s2 ) strcasecmp((s1), (s2))
62+ #define strcasestr_P (haystack , needle ) strcasestr((haystack), (needle))
63+ #define strcspn_P (s , accept ) strcspn((s), (accept))
64+ #define strlcat_P (s1 , s2 , n ) strlcat((s1), (s2), (n))
65+ #define strlcpy_P (s1 , s2 , n ) strlcpy((s1), (s2), (n))
66+ #define strlen_P (a ) strlen((a))
67+ #define strnlen_P (s , n ) strnlen((s), (n))
68+ #define strncmp_P (s1 , s2 , n ) strncmp((s1), (s2), (n))
69+ #define strncasecmp_P (s1 , s2 , n ) strncasecmp((s1), (s2), (n))
70+ #define strncat_P (s1 , s2 , n ) strncat((s1), (s2), (n))
71+ #define strncpy_P (s1 , s2 , n ) strncpy((s1), (s2), (n))
72+ #define strpbrk_P (s , accept ) strpbrk((s), (accept))
73+ #define strrchr_P (s , c ) strrchr((s), (c))
74+ #define strsep_P (sp , delim ) strsep((sp), (delim))
75+ #define strspn_P (s , accept ) strspn((s), (accept))
4976#define strstr_P (a , b ) strstr((a), (b))
50- #define strlen_P (s ) strlen((const char *)(s))
77+ #define strtok_P (s , delim ) strtok((s), (delim))
78+ #define strtok_rP (s , delim , last ) strtok((s), (delim), (last))
79+
80+ #define strlen_PF (a ) strlen((a))
81+ #define strnlen_PF (src , len ) strnlen((src), (len))
82+ #define memcpy_PF (dest , src , len ) memcpy((dest), (src), (len))
83+ #define strcpy_PF (dest , src ) strcpy((dest), (src))
84+ #define strncpy_PF (dest , src , len ) strncpy((dest), (src), (len))
85+ #define strcat_PF (dest , src ) strcat((dest), (src))
86+ #define strlcat_PF (dest , src , len ) strlcat((dest), (src), (len))
87+ #define strncat_PF (dest , src , len ) strncat((dest), (src), (len))
88+ #define strcmp_PF (s1 , s2 ) strcmp((s1), (s2))
89+ #define strncmp_PF (s1 , s2 , n ) strncmp((s1), (s2), (n))
90+ #define strcasecmp_PF (s1 , s2 ) strcasecmp((s1), (s2))
91+ #define strncasecmp_PF (s1 , s2 , n ) strncasecmp((s1), (s2), (n))
92+ #define strstr_PF (s1 , s2 ) strstr((s1), (s2))
93+ #define strlcpy_PF (dest , src , n ) strlcpy((dest), (src), (n))
94+ #define memcmp_PF (s1 , s2 , n ) memcmp((s1), (s2), (n))
95+
5196#define sprintf_P (s , f , ...) sprintf((s), (f), __VA_ARGS__)
5297
5398#define pgm_read_byte (addr ) (*(const unsigned char *)(addr))
5499#define pgm_read_word (addr ) (*(const unsigned short *)(addr))
55100#define pgm_read_dword (addr ) (*(const unsigned long *)(addr))
56101#define pgm_read_float (addr ) (*(const float *)(addr))
102+ #define pgm_read_ptr (addr ) (*(const void *)(addr))
57103
58104#define pgm_read_byte_near (addr ) pgm_read_byte(addr)
59105#define pgm_read_word_near (addr ) pgm_read_word(addr)
60106#define pgm_read_dword_near (addr ) pgm_read_dword(addr)
61107#define pgm_read_float_near (addr ) pgm_read_float(addr)
108+ #define pgm_read_ptr_near (addr ) pgm_read_ptr(addr)
109+
62110#define pgm_read_byte_far (addr ) pgm_read_byte(addr)
63111#define pgm_read_word_far (addr ) pgm_read_word(addr)
64112#define pgm_read_dword_far (addr ) pgm_read_dword(addr)
65113#define pgm_read_float_far (addr ) pgm_read_float(addr)
114+ #define pgm_read_ptr_far (addr ) pgm_read_ptr(addr)
115+
116+ #define pgm_get_far_address (addr ) (&(addr))
66117
67118#endif // __PGMSPACE_H_
68119
0 commit comments