@@ -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