81#define __PGMSPACE_H_ 1
91#include <bits/attribs.h>
92#include <bits/lpm-elpm.h>
94#define PROGMEM __ATTR_PROGMEM__
119#define PROGMEM_FAR __attribute__((__section__(".progmemx.data")))
144#define PROGMEM __attribute__((__progmem__))
311#include <bits/def-pgm-read.h>
313_Avrlibc_Def_Pgm_1 (
char,
char)
314_Avrlibc_Def_Pgm_1 (unsigned_char,
unsigned char)
315_Avrlibc_Def_Pgm_1 (signed_char,
signed char)
316_Avrlibc_Def_Pgm_1 (u8,
uint8_t)
317_Avrlibc_Def_Pgm_1 (i8,
int8_t)
318#if __SIZEOF_INT__ == 1
319_Avrlibc_Def_Pgm_1 (
int,
int)
320_Avrlibc_Def_Pgm_1 (
signed,
signed)
321_Avrlibc_Def_Pgm_1 (
unsigned,
unsigned)
322_Avrlibc_Def_Pgm_1 (signed_int,
signed int)
323_Avrlibc_Def_Pgm_1 (unsigned_int,
unsigned int)
325#if __SIZEOF_SHORT__ == 1
326_Avrlibc_Def_Pgm_1 (
short,
short)
327_Avrlibc_Def_Pgm_1 (unsigned_short,
unsigned short)
331_Avrlibc_Def_Pgm_2 (i16,
int16_t)
332#if __SIZEOF_INT__ == 2
333_Avrlibc_Def_Pgm_2 (
int,
int)
334_Avrlibc_Def_Pgm_2 (
signed,
signed)
335_Avrlibc_Def_Pgm_2 (
unsigned,
unsigned)
336_Avrlibc_Def_Pgm_2 (signed_int,
signed int)
337_Avrlibc_Def_Pgm_2 (unsigned_int,
unsigned int)
339#if __SIZEOF_SHORT__ == 2
340_Avrlibc_Def_Pgm_2 (
short,
short)
341_Avrlibc_Def_Pgm_2 (unsigned_short,
unsigned short)
343#if __SIZEOF_LONG__ == 2
344_Avrlibc_Def_Pgm_2 (
long,
long)
345_Avrlibc_Def_Pgm_2 (unsigned_long,
unsigned long)
348#if defined(__INT24_MAX__)
349_Avrlibc_Def_Pgm_3 (i24,
int24_t)
354_Avrlibc_Def_Pgm_4 (i32,
int32_t)
355_Avrlibc_Def_Pgm_4 (
float,
float)
356#if __SIZEOF_LONG__ == 4
357_Avrlibc_Def_Pgm_4 (
long,
long)
358_Avrlibc_Def_Pgm_4 (unsigned_long,
unsigned long)
360#if __SIZEOF_LONG_LONG__ == 4
361_Avrlibc_Def_Pgm_4 (long_long,
long long)
362_Avrlibc_Def_Pgm_4 (unsigned_long_long,
unsigned long long)
364#if __SIZEOF_DOUBLE__ == 4
365_Avrlibc_Def_Pgm_4 (
double,
double)
367#if __SIZEOF_LONG_DOUBLE__ == 4
368_Avrlibc_Def_Pgm_4 (long_double,
long double)
371#if __SIZEOF_LONG_LONG__ == 8
373_Avrlibc_Def_Pgm_8 (i64,
int64_t)
374_Avrlibc_Def_Pgm_8 (long_long,
long long)
375_Avrlibc_Def_Pgm_8 (unsigned_long_long,
unsigned long long)
377#if __SIZEOF_DOUBLE__ == 8
378_Avrlibc_Def_Pgm_8 (
double,
double)
380#if __SIZEOF_LONG_DOUBLE__ == 8
381_Avrlibc_Def_Pgm_8 (long_double,
long double)
553#include <bits/def-pgm-read-far.h>
555_Avrlibc_Def_Pgm_Far_1 (
char,
char)
556_Avrlibc_Def_Pgm_Far_1 (unsigned_char,
unsigned char)
557_Avrlibc_Def_Pgm_Far_1 (signed_char,
signed char)
558_Avrlibc_Def_Pgm_Far_1 (u8,
uint8_t)
559_Avrlibc_Def_Pgm_Far_1 (i8,
int8_t)
560#if __SIZEOF_INT__ == 1
561_Avrlibc_Def_Pgm_Far_1 (
int,
int)
562_Avrlibc_Def_Pgm_Far_1 (
unsigned,
unsigned)
563_Avrlibc_Def_Pgm_Far_1 (unsigned_int,
unsigned int)
564_Avrlibc_Def_Pgm_Far_1 (
signed,
signed)
565_Avrlibc_Def_Pgm_Far_1 (signed_int,
signed int)
567#if __SIZEOF_SHORT__ == 1
568_Avrlibc_Def_Pgm_Far_1 (
short,
short)
569_Avrlibc_Def_Pgm_Far_1 (unsigned_short,
unsigned short)
572_Avrlibc_Def_Pgm_Far_2 (u16,
uint16_t)
573_Avrlibc_Def_Pgm_Far_2 (i16,
int16_t)
574#if __SIZEOF_INT__ == 2
575_Avrlibc_Def_Pgm_Far_2 (
int,
int)
576_Avrlibc_Def_Pgm_Far_2 (
unsigned,
unsigned)
577_Avrlibc_Def_Pgm_Far_2 (unsigned_int,
unsigned int)
578_Avrlibc_Def_Pgm_Far_2 (
signed,
signed)
579_Avrlibc_Def_Pgm_Far_2 (signed_int,
signed int)
581#if __SIZEOF_SHORT__ == 2
582_Avrlibc_Def_Pgm_Far_2 (
short,
short)
583_Avrlibc_Def_Pgm_Far_2 (unsigned_short,
unsigned short)
585#if __SIZEOF_LONG__ == 2
586_Avrlibc_Def_Pgm_Far_2 (
long,
long)
587_Avrlibc_Def_Pgm_Far_2 (unsigned_long,
unsigned long)
590#if defined(__INT24_MAX__)
591_Avrlibc_Def_Pgm_Far_3 (i24,
int24_t)
592_Avrlibc_Def_Pgm_Far_3 (u24,
uint24_t)
595_Avrlibc_Def_Pgm_Far_4 (u32,
uint32_t)
596_Avrlibc_Def_Pgm_Far_4 (i32,
int32_t)
597_Avrlibc_Def_Pgm_Far_4 (
float,
float)
598#if __SIZEOF_LONG__ == 4
599_Avrlibc_Def_Pgm_Far_4 (
long,
long)
600_Avrlibc_Def_Pgm_Far_4 (unsigned_long,
unsigned long)
602#if __SIZEOF_LONG_LONG__ == 4
603_Avrlibc_Def_Pgm_Far_4 (long_long,
long long)
604_Avrlibc_Def_Pgm_Far_4 (unsigned_long_long,
unsigned long long)
606#if __SIZEOF_DOUBLE__ == 4
607_Avrlibc_Def_Pgm_Far_4 (
double,
double)
609#if __SIZEOF_LONG_DOUBLE__ == 4
610_Avrlibc_Def_Pgm_Far_4 (long_double,
long double)
613#if __SIZEOF_LONG_LONG__ == 8
614_Avrlibc_Def_Pgm_Far_8 (u64,
uint64_t)
615_Avrlibc_Def_Pgm_Far_8 (i64,
int64_t)
616_Avrlibc_Def_Pgm_Far_8 (long_long,
long long)
617_Avrlibc_Def_Pgm_Far_8 (unsigned_long_long,
unsigned long long)
619#if __SIZEOF_DOUBLE__ == 8
620_Avrlibc_Def_Pgm_Far_8 (
double,
double)
622#if __SIZEOF_LONG_DOUBLE__ == 8
623_Avrlibc_Def_Pgm_Far_8 (long_double,
long double)
632#if defined(__DOXYGEN__)
634#elif defined(__PROG_TYPES_COMPAT__)
636typedef void prog_void __attribute__((__progmem__,__deprecated__(
"prog_void type is deprecated.")));
637typedef char prog_char __attribute__((__progmem__,__deprecated__(
"prog_char type is deprecated.")));
638typedef unsigned char prog_uchar __attribute__((__progmem__,__deprecated__(
"prog_uchar type is deprecated.")));
639typedef int8_t prog_int8_t __attribute__((__progmem__,__deprecated__(
"prog_int8_t type is deprecated.")));
640typedef uint8_t prog_uint8_t __attribute__((__progmem__,__deprecated__(
"prog_uint8_t type is deprecated.")));
641typedef int16_t prog_int16_t __attribute__((__progmem__,__deprecated__(
"prog_int16_t type is deprecated.")));
642typedef uint16_t prog_uint16_t __attribute__((__progmem__,__deprecated__(
"prog_uint16_t type is deprecated.")));
643typedef int32_t prog_int32_t __attribute__((__progmem__,__deprecated__(
"prog_int32_t type is deprecated.")));
644typedef uint32_t prog_uint32_t __attribute__((__progmem__,__deprecated__(
"prog_uint32_t type is deprecated.")));
646typedef int64_t prog_int64_t __attribute__((__progmem__,__deprecated__(
"prog_int64_t type is deprecated.")));
647typedef uint64_t prog_uint64_t __attribute__((__progmem__,__deprecated__(
"prog_uint64_t type is deprecated.")));
651#define PGM_P const prog_char *
655#define PGM_VOID_P const prog_void *
661#define PGM_P const char *
665#define PGM_VOID_P const void *
679#if defined(__DOXYGEN__)
691# define PSTR(str) ({ static const PROGMEM char c[] = (str); &c[0]; })
694# define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); &__c[0];}))
697#if defined(__DOXYGEN__)
704# define PSTR_FAR(str) ({ static const PROGMEM_FAR char c[] = (str); pgm_get_far_address(c[0]); })
707# define PSTR_FAR(s) (__extension__({static const char __c[] PROGMEM_FAR = (s); pgm_get_far_address(__c[0]);}))
714#if defined (__AVR_TINY__)
721#define __LPM(addr) (* (const uint8_t*)(addr))
722#define __LPM_word(addr) (* (const uint16_t*)(addr))
723#define __LPM_dword(addr) (* (const uint32_t*)(addr))
724# if __SIZEOF_LONG_LONG__ == 8
725# define __LPM_qword(addr) (* (const uint64_t*)(addr))
730 uint16_t __addr16 = (uint16_t) (addr); \
732 __LPM__1 (__result, __addr16); \
736#define __LPM_word(addr) \
738 uint16_t __addr16 = (uint16_t) (addr); \
740 __LPM__2 (__result, __addr16); \
744#define __LPM_dword(addr) \
746 uint16_t __addr16 = (uint16_t) (addr); \
748 __LPM__4 (__result, __addr16); \
752#if __SIZEOF_LONG_LONG__ == 8
753#define __LPM_qword(addr) \
755 uint16_t __addr16 = (uint16_t) (addr); \
757 __LPM__8 (__result, __addr16); \
764#define __ELPM(addr) \
766 uint_farptr_t __addr32 = (addr); \
768 __ELPM__1 (__result, __addr32, uint8_t); \
772#define __ELPM_word(addr) \
774 uint_farptr_t __addr32 = (addr); \
776 __ELPM__2 (__result, __addr32, uint16_t); \
780#define __ELPM_dword(addr) \
782 uint_farptr_t __addr32 = (addr); \
784 __ELPM__4 (__result, __addr32, uint32_t); \
788#if __SIZEOF_LONG_LONG__ == 8
789#define __ELPM_qword(addr) \
791 uint_farptr_t __addr32 = (addr); \
793 __ELPM__8 (__result, __addr32, uint64_t); \
805#define pgm_read_byte_near(__addr) __LPM ((uint16_t)(__addr))
810#define pgm_read_word_near(__addr) __LPM_word ((uint16_t)(__addr))
815#define pgm_read_dword_near(__addr) \
816 __LPM_dword ((uint16_t)(__addr))
822#define pgm_read_qword_near(__addr) __LPM_qword ((uint16_t)(__addr))
827#define pgm_read_float_near(addr) pgm_read_float (addr)
832#define pgm_read_ptr_near(__addr) \
833 ((void*) __LPM_word ((uint16_t)(__addr)))
840#define pgm_read_byte_far(__addr) __ELPM (__addr)
845#define pgm_read_word_far(__addr) __ELPM_word (__addr)
850#define pgm_read_dword_far(__addr) __ELPM_dword (__addr)
856#define pgm_read_qword_far(__addr) __ELPM_qword (__addr)
861#define pgm_read_ptr_far(__addr) ((void*) __ELPM_word (__addr))
868#define pgm_read_byte(__addr) pgm_read_byte_near(__addr)
873#define pgm_read_word(__addr) pgm_read_word_near(__addr)
878#define pgm_read_dword(__addr) pgm_read_dword_near(__addr)
884#define pgm_read_qword(__addr) pgm_read_qword_near(__addr)
889#define pgm_read_ptr(__addr) pgm_read_ptr_near(__addr)
926#define pgm_get_far_address(var)
929#define pgm_get_far_address(var) \
931 uint_farptr_t __tmp; \
934 "ldi %A0, lo8(%1)" "\n\t" \
935 "ldi %B0, hi8(%1)" "\n\t" \
936 "ldi %C0, hh8(%1)" "\n\t" \
951#define pgm_get_far_address(var) \
953 uint_farptr_t __tmp; \
956 "ldi %A0, lo8(0x4000+(%1))" "\n\t" \
957 "ldi %B0, hi8(0x4000+(%1))" "\n\t" \
958 "ldi %C0, hh8(0x4000+(%1))" "\n\t" \
998extern const void *
memchr_P(
const void *,
int __val,
size_t __len) __ATTR_CONST__;
1012extern int memcmp_P(
const void *,
const void *,
size_t) __ATTR_PURE__;
1019extern void *
memccpy_P(
void *,
const void *,
int __val,
size_t);
1035extern void *
memmem_P(
const void *,
size_t,
const void *,
size_t) __ATTR_PURE__;
1048extern const void *
memrchr_P(
const void *,
int __val,
size_t __len) __ATTR_CONST__;
1075extern const char *
strchr_P(
const char *,
int __val) __ATTR_CONST__;
1078extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1079const char *
strchr_P(
const char *__hay,
int __val)
1081 register const char *__r24 __asm(
"24") = __hay;
1082 register int __r22 __asm(
"22") = __val;
1083 __asm (
"%~call strchr_P"
1084 :
"+r" (__r24) :
"r" (__r22) :
"30",
"31");
1099extern const char *
strchrnul_P(
const char *,
int __val) __ATTR_CONST__;
1112extern int strcmp_P(
const char *,
const char *) __ATTR_PURE__;
1173extern size_t strcspn_P(
const char *__s,
const char * __reject) __ATTR_PURE__;
1214extern size_t strnlen_P(
const char *,
size_t) __ATTR_CONST__;
1226extern int strncmp_P(
const char *,
const char *,
size_t) __ATTR_PURE__;
1286extern char *
strpbrk_P(
const char *__s,
const char * __accept) __ATTR_PURE__;
1298extern const char *
strrchr_P(
const char *,
int __val) __ATTR_CONST__;
1318extern char *
strsep_P(
char **__sp,
const char * __delim);
1331extern size_t strspn_P(
const char *__s,
const char * __accept) __ATTR_PURE__;
1345extern char *
strstr_P(
const char *,
const char *) __ATTR_PURE__;
1387extern char *
strtok_rP(
char *__s,
const char * __delim,
char **__last);
1666#define memcpy_P(x, y, z) memcpy(x, y, z)
1667#define strlen_P(x) strlen(x)
1668#define strcpy_P(x, y) strcpy(x, y)
1669#define stpcpy_P(x, y) stpcpy(x, y)
1674extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1675void*
memcpy_P(
void *__x,
const void *__z,
size_t __s)
1677 register size_t __r20 __asm(
"20") = __s;
1679 __asm
volatile (
"%~call __memcpy_P" :
"+x" (__x),
"+z" (__z),
"+r" (__r20)
1685extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1688 if (__builtin_constant_p (__builtin_strlen (__s)))
1690 return __builtin_strlen (__s);
1694 register const char *__r24 __asm(
"24") = __s;
1695 register size_t __res __asm(
"24");
1696 __asm (
"%~call strlen_P" :
"=r" (__res) :
"r" (__r24)
1703extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1704char*
strcpy_P(
char *__x,
const char *__z)
1707 __asm
volatile (
"%~call __strcpy_P"
1708 :
"+x" (__x),
"+z" (__z) ::
"0",
"memory");
1712extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1713char*
stpcpy_P(
char *__x,
const char *__z)
1715 __asm
volatile (
"%~call __strcpy_P"
1716 :
"+x" (__x),
"+z" (__z) ::
"0",
"memory");
1721extern __ATTR_ALWAYS_INLINE__ __ATTR_GNU_INLINE__
1722int strcmp_P(
const char *__x,
const char *__z)
1724 register int __ret __asm(
"24");
1725 __asm (
"%~call __strcmp_P"
1726 :
"=r" (__ret),
"+x" (__x),
"+z" (__z) ::
"memory");
1738#if defined(__cplusplus) && defined(__pgm_read_template__)
1747template<
typename __T,
size_t>
1748struct __pgm_read_impl
1754 __T operator() (
const __T *__addr)
const
1757 memcpy_P (&__res, __addr,
sizeof(__T));
1762template<
typename __T>
1763struct __pgm_read_impl<__T, 1>
1765 __T operator() (
const __T *__addr)
const
1767 __T __res; __LPM__1 (__res, __addr);
return __res;
1771template<
typename __T>
1772struct __pgm_read_impl<__T, 2>
1774 __T operator() (
const __T *__addr)
const
1776 __T __res; __LPM__2 (__res, __addr);
return __res;
1780template<
typename __T>
1781struct __pgm_read_impl<__T, 3>
1783 __T operator() (
const __T *__addr)
const
1785 __T __res; __LPM__3 (__res, __addr);
return __res;
1789template<
typename __T>
1790struct __pgm_read_impl<__T, 4>
1792 __T operator() (
const __T *__addr)
const
1794 __T __res; __LPM__4 (__res, __addr);
return __res;
1798template<
typename __T>
1799struct __pgm_read_impl<__T, 8>
1801 __T operator() (
const __T *__addr)
const
1803 __T __res; __LPM__8 (__res, __addr);
return __res;
1807template<
typename __T>
1808__T pgm_read (
const __T *__addr)
1810 return __pgm_read_impl<__T, sizeof(__T)>() (__addr);
1815template<
typename __T,
size_t>
1816struct __pgm_read_far_impl
1822 __T operator() (
const __T *__addr)
const
1825 memcpy_PF (&__res, __addr,
sizeof(__T));
1830template<
typename __T>
1831struct __pgm_read_far_impl<__T, 1>
1835 __T __res; __ELPM__1 (__res, __addr, __T);
return __res;
1839template<
typename __T>
1840struct __pgm_read_far_impl<__T, 2>
1844 __T __res; __ELPM__2 (__res, __addr, __T);
return __res;
1848template<
typename __T>
1849struct __pgm_read_far_impl<__T, 3>
1853 __T __res; __ELPM__3 (__res, __addr, __T);
return __res;
1857template<
typename __T>
1858struct __pgm_read_far_impl<__T, 4>
1862 __T __res; __ELPM__4 (__res, __addr, __T);
return __res;
1866template<
typename __T>
1867struct __pgm_read_far_impl<__T, 8>
1871 __T __res; __ELPM__8 (__res, __addr, __T);
return __res;
1875template<
typename __T>
1878 return __pgm_read_far_impl<__T, sizeof(__T)>() (__addr);
uint32_t uint_farptr_t
Definition: inttypes.h:83
char * strstr_PF(const char *s1, uint_farptr_t s2)
Locate a substring.
static signed int pgm_read_signed_int(const signed int *addr)
const char * strchrnul_P(const char *, int __val)
static uint24_t pgm_read_u24(const uint24_t *addr)
const char * strchr_P(const char *, int __val)
Locate character in program space string.
int strcmp_PF(const char *s1, uint_farptr_t s2)
Compares two strings.
void * memcpy_PF(void *dest, uint_farptr_t src, size_t len)
Copy a memory block from flash to SRAM.
char * strsep_P(char **__sp, const char *__delim)
Parse a string into tokens.
static unsigned long pgm_read_unsigned_long(const unsigned long *addr)
int strcmp_P(const char *, const char *)
char * strcasestr_P(const char *, const char *)
static int pgm_read_int(const int *addr)
char * strncpy_P(char *, const char *, size_t)
static int64_t pgm_read_i64_far(uint_farptr_t addr)
static int24_t pgm_read_i24_far(uint_farptr_t addr)
static unsigned char pgm_read_unsigned_char(const unsigned char *addr)
const void * memrchr_P(const void *, int __val, size_t __len)
static int8_t pgm_read_i8_far(uint_farptr_t addr)
static long long pgm_read_long_long(const long long *addr)
int strcasecmp_P(const char *, const char *)
Compare two strings ignoring case.
static uint64_t pgm_read_u64(const uint64_t *addr)
size_t strcspn_P(const char *__s, const char *__reject)
static unsigned long pgm_read_unsigned_long_far(uint_farptr_t addr)
static long long pgm_read_long_long_far(uint_farptr_t addr)
static double pgm_read_double(const double *addr)
char * strpbrk_P(const char *__s, const char *__accept)
static short pgm_read_short_far(uint_farptr_t addr)
static uint24_t pgm_read_u24_far(uint_farptr_t addr)
static unsigned short pgm_read_unsigned_short_far(uint_farptr_t addr)
const void * memchr_P(const void *, int __val, size_t __len)
Scan flash memory for a character.
static signed pgm_read_signed(const signed *addr)
void * memccpy_P(void *, const void *, int __val, size_t)
static signed char pgm_read_signed_char_far(uint_farptr_t addr)
char * strtok_rP(char *__s, const char *__delim, char **__last)
Parses string into tokens.
static uint8_t pgm_read_u8_far(uint_farptr_t addr)
char * strncpy_PF(char *dest, uint_farptr_t src, size_t len)
Duplicate a string until a limited length.
T pgm_read< T >(const T *addr)
void * memmem_P(const void *, size_t, const void *, size_t)
size_t strlen_PF(uint_farptr_t src)
Obtain the length of a string.
char * stpcpy_PF(char *dest, uint_farptr_t src)
Duplicate a string.
static int8_t pgm_read_i8(const int8_t *addr)
static unsigned pgm_read_unsigned(const unsigned *addr)
static unsigned int pgm_read_unsigned_int(const unsigned int *addr)
size_t strnlen_P(const char *, size_t)
Determine the length of a fixed-size string.
char * strcpy_P(char *, const char *)
static int16_t pgm_read_i16_far(uint_farptr_t addr)
char * strcat_P(char *, const char *)
static float pgm_read_float_far(uint_farptr_t addr)
int strncasecmp_P(const char *, const char *, size_t)
Compare two strings ignoring case.
size_t strspn_P(const char *__s, const char *__accept)
static int pgm_read_int_far(uint_farptr_t addr)
size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz)
Copy a string from progmem to RAM.
int memcmp_PF(const void *, uint_farptr_t, size_t)
Compare memory areas.
static long pgm_read_long(const long *addr)
static uint16_t pgm_read_u16(const uint16_t *addr)
const char * strrchr_P(const char *, int __val)
Locate character in string.
static short pgm_read_short(const short *addr)
int strcasecmp_PF(const char *s1, uint_farptr_t s2)
Compare two strings ignoring case.
size_t strnlen_PF(uint_farptr_t src, size_t len)
Determine the length of a fixed-size string.
size_t strlcat_P(char *, const char *, size_t)
Concatenate two strings.
char * strncat_P(char *, const char *, size_t)
Concatenate two strings.
static uint16_t pgm_read_u16_far(uint_farptr_t addr)
char * stpcpy_P(char *, const char *)
char * strncat_PF(char *dest, uint_farptr_t src, size_t len)
Concatenate two strings.
static uint64_t pgm_read_u64_far(uint_farptr_t addr)
char * strcat_PF(char *dest, uint_farptr_t src)
Concatenates two strings.
T pgm_read_far< T >(uint_farptr_t addr)
static signed pgm_read_signed_far(uint_farptr_t addr)
static unsigned char pgm_read_unsigned_char_far(uint_farptr_t addr)
char * strtok_P(char *__s, const char *__delim)
Parses the string into tokens.
static long double pgm_read_long_double_far(uint_farptr_t addr)
static char pgm_read_char(const char *addr)
int strncmp_P(const char *, const char *, size_t)
static unsigned pgm_read_unsigned_far(uint_farptr_t addr)
char * strstr_P(const char *, const char *)
Locate a substring.
static int32_t pgm_read_i32_far(uint_farptr_t addr)
int memcmp_P(const void *, const void *, size_t)
Compare memory areas.
static long double pgm_read_long_double(const long double *addr)
size_t strlcpy_P(char *, const char *, size_t)
Copy a string from progmem to RAM.
static unsigned int pgm_read_unsigned_int_far(uint_farptr_t addr)
static int24_t pgm_read_i24(const int24_t *addr)
static unsigned long long pgm_read_unsigned_long_long_far(uint_farptr_t addr)
static unsigned long long pgm_read_unsigned_long_long(const unsigned long long *addr)
static uint8_t pgm_read_u8(const uint8_t *addr)
static unsigned short pgm_read_unsigned_short(const unsigned short *addr)
static float pgm_read_float(const float *addr)
int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n)
Compare two strings ignoring case.
char * strcpy_PF(char *dest, uint_farptr_t src)
Duplicate a string.
int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n)
Compare two strings with limited length.
void * memcpy_P(void *, const void *, size_t)
static int16_t pgm_read_i16(const int16_t *addr)
static long pgm_read_long_far(uint_farptr_t addr)
static size_t strlen_P(const char *s)
static uint32_t pgm_read_u32_far(uint_farptr_t addr)
uint_farptr_t strchr_PF(uint_farptr_t, int __val)
Locate character in far program space string.
static signed char pgm_read_signed_char(const signed char *addr)
static int64_t pgm_read_i64(const int64_t *addr)
size_t strlcat_PF(char *dst, uint_farptr_t src, size_t siz)
Concatenate two strings.
static char pgm_read_char_far(uint_farptr_t addr)
static uint32_t pgm_read_u32(const uint32_t *addr)
static int32_t pgm_read_i32(const int32_t *addr)
static signed int pgm_read_signed_int_far(uint_farptr_t addr)
static double pgm_read_double_far(uint_farptr_t addr)
unsigned int uint16_t
Definition: stdint.h:96
unsigned long int uint32_t
Definition: stdint.h:114
__int24 int24_t
Definition: stdint.h:101
signed long long int int64_t
Definition: stdint.h:120
signed int int16_t
Definition: stdint.h:92
unsigned char uint8_t
Definition: stdint.h:88
unsigned long long int uint64_t
Definition: stdint.h:126
__uint24 uint24_t
Definition: stdint.h:106
signed long int int32_t
Definition: stdint.h:110
signed char int8_t
Definition: stdint.h:84