RUI3 (RAK Unified Interface 3) - RAK4631
pgmspace.h
Go to the documentation of this file.
1 
8 #ifndef __PGMSPACE_H__
9 #define __PGMSPACE_H__
10 
11 
12 #include <inttypes.h>
13 
14 #define __ATTR_PROGMEM__ __attribute__((section(".progmem")))
15 
16 #define PROGMEM
17 
18 #define PGM_P const char *
19 
20 #define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); &__c[0];}))
21 
22 class __FlashStringHelper;
23 #define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
24 
25 #define FPSTR(pstr_pointer) (reinterpret_cast<const __FlashStringHelper *>(pstr_pointer))
26 
27 #define _SFR_BYTE(n) (n)
28 
29 typedef void prog_void;
30 typedef char prog_char;
31 typedef unsigned char prog_uchar;
32 typedef int8_t prog_int8_t;
33 typedef uint8_t prog_uint8_t;
34 typedef int16_t prog_int16_t;
35 typedef uint16_t prog_uint16_t;
36 typedef int32_t prog_int32_t;
37 typedef uint32_t prog_uint32_t;
38 typedef int32_t prog_int64_t;
39 typedef uint32_t prog_uint64_t;
40 
41 typedef const void* int_farptr_t;
42 typedef const void* uint_farptr_t;
43 
44 #define memchr_P(s, c, n) memchr((s), (c), (n))
45 #define memcmp_P(s1, s2, n) memcmp((s1), (s2), (n))
46 #define memccpy_P(dest, src, c, n) memccpy((dest), (src), (c), (n))
47 #define memcpy_P(dest, src, n) memcpy((dest), (src), (n))
48 #define memmem_P(haystack, haystacklen, needle, needlelen) memmem((haystack), (haystacklen), (needle), (needlelen))
49 #define memrchr_P(s, c, n) memrchr((s), (c), (n))
50 #define strcat_P(dest, src) strcat((dest), (src))
51 #define strchr_P(s, c) strchr((s), (c))
52 #define strchrnul_P(s, c) strchrnul((s), (c))
53 #define strcmp_P(a, b) strcmp((a), (b))
54 #define strcpy_P(dest, src) strcpy((dest), (src))
55 #define strcasecmp_P(s1, s2) strcasecmp((s1), (s2))
56 #define strcasestr_P(haystack, needle) strcasestr((haystack), (needle))
57 #define strcspn_P(s, accept) strcspn((s), (accept))
58 #define strlcat_P(s1, s2, n) strlcat((s1), (s2), (n))
59 #define strlcpy_P(s1, s2, n) strlcpy((s1), (s2), (n))
60 #define strlen_P(a) strlen((a))
61 #define strnlen_P(s, n) strnlen((s), (n))
62 #define strncmp_P(s1, s2, n) strncmp((s1), (s2), (n))
63 #define strncasecmp_P(s1, s2, n) strncasecmp((s1), (s2), (n))
64 #define strncat_P(s1, s2, n) strncat((s1), (s2), (n))
65 #define strncpy_P(s1, s2, n) strncpy((s1), (s2), (n))
66 #define strpbrk_P(s, accept) strpbrk((s), (accept))
67 #define strrchr_P(s, c) strrchr((s), (c))
68 #define strsep_P(sp, delim) strsep((sp), (delim))
69 #define strspn_P(s, accept) strspn((s), (accept))
70 #define strstr_P(a, b) strstr((a), (b))
71 #define strtok_P(s, delim) strtok((s), (delim))
72 #define strtok_rP(s, delim, last) strtok((s), (delim), (last))
73 
74 #define strlen_PF(a) strlen((a))
75 #define strnlen_PF(src, len) strnlen((src), (len))
76 #define memcpy_PF(dest, src, len) memcpy((dest), (src), (len))
77 #define strcpy_PF(dest, src) strcpy((dest), (src))
78 #define strncpy_PF(dest, src, len) strncpy((dest), (src), (len))
79 #define strcat_PF(dest, src) strcat((dest), (src))
80 #define strlcat_PF(dest, src, len) strlcat((dest), (src), (len))
81 #define strncat_PF(dest, src, len) strncat((dest), (src), (len))
82 #define strcmp_PF(s1, s2) strcmp((s1), (s2))
83 #define strncmp_PF(s1, s2, n) strncmp((s1), (s2), (n))
84 #define strcasecmp_PF(s1, s2) strcasecmp((s1), (s2))
85 #define strncasecmp_PF(s1, s2, n) strncasecmp((s1), (s2), (n))
86 #define strstr_PF(s1, s2) strstr((s1), (s2))
87 #define strlcpy_PF(dest, src, n) strlcpy((dest), (src), (n))
88 #define memcmp_PF(s1, s2, n) memcmp((s1), (s2), (n))
89 
90 #define sprintf_P(s, f, ...) sprintf((s), (f), __VA_ARGS__)
91 
92 #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
93 #define pgm_read_word(addr) (*(const unsigned short *)(addr))
94 #define pgm_read_dword(addr) (*(const unsigned long *)(addr))
95 #define pgm_read_float(addr) (*(const float *)(addr))
96 #define pgm_read_ptr(addr) (*(const void* *)(addr))
97 
98 #define pgm_read_byte_near(addr) pgm_read_byte(addr)
99 #define pgm_read_word_near(addr) pgm_read_word(addr)
100 #define pgm_read_dword_near(addr) pgm_read_dword(addr)
101 #define pgm_read_float_near(addr) pgm_read_float(addr)
102 #define pgm_read_ptr_near(addr) pgm_read_ptr(addr)
103 
104 #define pgm_read_byte_far(addr) pgm_read_byte(addr)
105 #define pgm_read_word_far(addr) pgm_read_word(addr)
106 #define pgm_read_dword_far(addr) pgm_read_dword(addr)
107 #define pgm_read_float_far(addr) pgm_read_float(addr)
108 #define pgm_read_ptr_far(addr) pgm_read_ptr(addr)
109 
110 #define pgm_get_far_address(addr) (&(addr))
111 
112 #endif
uint32_t prog_uint64_t
Definition: pgmspace.h:39
int8_t prog_int8_t
Definition: pgmspace.h:32
uint32_t prog_uint32_t
Definition: pgmspace.h:37
uint16_t prog_uint16_t
Definition: pgmspace.h:35
const void * int_farptr_t
Definition: pgmspace.h:41
void prog_void
Definition: pgmspace.h:29
int32_t prog_int32_t
Definition: pgmspace.h:36
int32_t prog_int64_t
Definition: pgmspace.h:38
unsigned char prog_uchar
Definition: pgmspace.h:31
char prog_char
Definition: pgmspace.h:30
int16_t prog_int16_t
Definition: pgmspace.h:34
const void * uint_farptr_t
Definition: pgmspace.h:42
uint8_t prog_uint8_t
Definition: pgmspace.h:33