@@ -44,27 +44,78 @@ typedef int16_t prog_int16_t;
44
44
typedef uint16_t prog_uint16_t ;
45
45
typedef int32_t prog_int32_t ;
46
46
typedef uint32_t prog_uint32_t ;
47
+ typedef int32_t prog_int64_t ;
48
+ typedef uint32_t prog_uint64_t ;
47
49
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))
50
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))
51
62
#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))
53
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))
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
+
54
99
#define sprintf_P (s , f , ...) sprintf((s), (f), __VA_ARGS__)
55
100
56
101
#define pgm_read_byte (addr ) (*(const unsigned char *)(addr))
57
102
#define pgm_read_word (addr ) (*(const unsigned short *)(addr))
58
103
#define pgm_read_dword (addr ) (*(const unsigned long *)(addr))
59
104
#define pgm_read_float (addr ) (*(const float *)(addr))
105
+ #define pgm_read_ptr (addr ) (*(const void *)(addr))
60
106
61
107
#define pgm_read_byte_near (addr ) pgm_read_byte(addr)
62
108
#define pgm_read_word_near (addr ) pgm_read_word(addr)
63
109
#define pgm_read_dword_near (addr ) pgm_read_dword(addr)
64
110
#define pgm_read_float_near (addr ) pgm_read_float(addr)
111
+ #define pgm_read_ptr_near (addr ) pgm_read_ptr(addr)
112
+
65
113
#define pgm_read_byte_far (addr ) pgm_read_byte(addr)
66
114
#define pgm_read_word_far (addr ) pgm_read_word(addr)
67
115
#define pgm_read_dword_far (addr ) pgm_read_dword(addr)
68
116
#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))
69
120
70
121
#endif
0 commit comments