You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2370 lines
144 KiB
HTML
2370 lines
144 KiB
HTML
4 years ago
|
<!-- HTML header for doxygen 1.8.7-->
|
||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||
|
<meta name="generator" content="Doxygen 1.6.3"/>
|
||
|
<!--BEGIN PROJECT_NAME--><title>avr-libc: avr-libc: <avr/pgmspace.h>: Program Space Utilities</title><!--END PROJECT_NAME-->
|
||
|
<!--BEGIN !PROJECT_NAME--><title>avr-libc: <avr/pgmspace.h>: Program Space Utilities</title><!--END !PROJECT_NAME-->
|
||
|
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
|
||
|
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||
|
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||
|
$treeview
|
||
|
$search
|
||
|
$mathjax
|
||
|
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||
|
$extrastylesheet
|
||
|
</head>
|
||
|
<body>
|
||
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
|
|
||
|
<!--BEGIN TITLEAREA-->
|
||
|
<div id="titlearea">
|
||
|
<table cellspacing="0" cellpadding="0">
|
||
|
<tbody>
|
||
|
<tr style="height: 56px;">
|
||
|
<!--BEGIN PROJECT_LOGO-->
|
||
|
<td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
|
||
|
<!--END PROJECT_LOGO-->
|
||
|
<!--BEGIN PROJECT_NAME-->
|
||
|
<td style="padding-left: 0.5em;">
|
||
|
<div id="projectname">avr-libc
|
||
|
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">2.0.0</span><!--END PROJECT_NUMBER-->
|
||
|
</div>
|
||
|
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
|
||
|
</td>
|
||
|
<!--END PROJECT_NAME-->
|
||
|
<!--BEGIN !PROJECT_NAME-->
|
||
|
<!--BEGIN PROJECT_BRIEF-->
|
||
|
<td style="padding-left: 0.5em;">
|
||
|
<div id="projectbrief">$projectbrief</div>
|
||
|
</td>
|
||
|
<!--END PROJECT_BRIEF-->
|
||
|
<!--END !PROJECT_NAME-->
|
||
|
<!--BEGIN DISABLE_INDEX-->
|
||
|
<!--BEGIN SEARCHENGINE-->
|
||
|
<td>$searchbox</td>
|
||
|
<!--END SEARCHENGINE-->
|
||
|
<!--END DISABLE_INDEX-->
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table>
|
||
|
<tr>
|
||
|
<td align="left"><a href="http://www.nongnu.org/avr-libc/"><h2>AVR Libc Home Page</h2></a></td>
|
||
|
<td align="center" colspan=4><img src="avrs.png" alt="AVRs" align="middle" border="0"></td>
|
||
|
<td align="right"><a href="https://savannah.nongnu.org/projects/avr-libc/"><h2>AVR Libc Development Pages</h2></a></td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td align="center" width="20%"><a href="index.html"><h2>Main Page</h2></a></td>
|
||
|
<td align="center" width="20%"><a href="pages.html"><h2>User Manual</h2></a></td>
|
||
|
<td align="center" width="20%"><a href="modules.html"><h2>Library Reference</h2></a></td>
|
||
|
<td align="center" width="20%"><a href="FAQ.html"><h2>FAQ</h2></a></td>
|
||
|
<td align="center" width="20%"><a href="group__demos.html"><h2>Example Projects</h2></a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<!--END TITLEAREA-->
|
||
|
<!-- end header part -->
|
||
|
<!-- Generated by Doxygen 1.6.3 -->
|
||
|
<script type="text/javascript"><!--
|
||
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||
|
--></script>
|
||
|
<div class="contents">
|
||
|
<h1><avr/pgmspace.h>: Program Space Utilities</h1><table border="0" cellpadding="0" cellspacing="0">
|
||
|
<tr><td colspan="2"><h2>Defines</h2></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga75acaba9e781937468d0911423bc0c35">PROGMEM</a> __ATTR_PROGMEM__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga963f816fc88a5d8479c285ed4c630229">PGM_P</a> const char *</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga84a61d55b7efefabd8419e28f02704f9">PGM_VOID_P</a> const void *</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga05ca900ebf7cd121be73c654d9ccb3eb">PSTR</a>(s) ((const PROGMEM char *)(s))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga88d7dd4863f87530e1a34ece430a587c">pgm_read_byte_near</a>(address_short) __LPM((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaf51eeaa847dd2668d2a66b70ecfb7398">pgm_read_word_near</a>(address_short) __LPM_word((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga7fa92c0a662403a643859e0f33b0a182">pgm_read_dword_near</a>(address_short) __LPM_dword((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga066040df814dabc7980cd1422508b46b">pgm_read_float_near</a>(address_short) __LPM_float((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gadcfd4df2e156efc1f6a380dfc58a5b81">pgm_read_ptr_near</a>(address_short) (void*)__LPM_word((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga0d4d7f6231716747c52b969d4febdeed">pgm_read_byte_far</a>(address_long) __ELPM((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gad7082c45c2c96f015c76eff1ad00a99a">pgm_read_word_far</a>(address_long) __ELPM_word((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga309908c1b7430f0d140edb78fcf8f2b9">pgm_read_dword_far</a>(address_long) __ELPM_dword((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga4a5a593aa84062ca08b3f2d564a6f466">pgm_read_float_far</a>(address_long) __ELPM_float((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaa7756dce7bcc8ba46e648981fafebbf2">pgm_read_ptr_far</a>(address_long) (void*)__ELPM_word((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga73084a8bbde259ffae72980354b3f027">pgm_read_byte</a>(address_short) pgm_read_byte_near(address_short)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga32d8ab354156f4b1ffdb77a275ba6223">pgm_read_word</a>(address_short) pgm_read_word_near(address_short)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gabb68859ac5dfa6a09ac048b4037a83b6">pgm_read_dword</a>(address_short) pgm_read_dword_near(address_short)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga7911bddb066a8a038efc4b7857728fa8">pgm_read_float</a>(address_short) pgm_read_float_near(address_short)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gac9f61931fd8cf4cf4764744dbaee81b6">pgm_read_ptr</a>(address_short) pgm_read_ptr_near(address_short)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga8ddf0e398bde8078aa9395ac77c83f0a">pgm_get_far_address</a>(var)</td></tr>
|
||
|
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef void PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gadb50761b9f19d45449445208778ee420">prog_void</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef char PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaa475b6b81fd8b34de45695da1da523b6">prog_char</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga7d4701843a2019e3ef5a9866dc7586ed">prog_uchar</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#gaef44329758059c91c76d334e8fc09700">int8_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga48c7cb011ea5f82f4b73df40e07dff46">prog_int8_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#gaba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga39235a28487ae7790ce5f4c8178c8ed7">prog_uint8_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#ga932e6ccc3d54c58f761c1aead83bd6d7">int16_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaafc910d0b2c4d76afffa4710b98df6fa">prog_int16_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga93ec00229866bf6a125384ad08cefa73">prog_uint16_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#gadb828ef50c2dbb783109824e94cf6c47">int32_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaa839901aa518fb43d361588dd8d2b44b">prog_int32_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga31bad0d22ead95a41e725c38ea63eb26">prog_uint32_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#ga831d6234342279926bb11bad3a37add9">int64_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga5b1f9927f06d841e9ac07af62e71cfef">prog_int64_t</a></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__avr__stdint.html#gad27ed092432b64ff558d2254c278720f">uint64_t</a> PROGMEM </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaa50eebe90a40e0276bcc49ea0482b211">prog_uint64_t</a></td></tr>
|
||
|
<tr><td colspan="2"><h2>Functions</h2></td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga44f0b73a84e00da51ae135affc706b34">memchr_P</a> (const void *, int __val, size_t __len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gab1b0b56685303c2452e98914e7e5d6d0">memcmp_P</a> (const void *, const void *, size_t) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga469016cff9c68b19838ad26e099b0fc3">memccpy_P</a> (void *, const void *, int __val, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gad92fa2ebe26e65fa424051047d21a0eb">memcpy_P</a> (void *, const void *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaee844cc0ac8f736e6599dbaae1fba328">memmem_P</a> (const void *, size_t, const void *, size_t) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga8dd5ea616f34e8fdc2ae4fa9452d8a88">memrchr_P</a> (const void *, int __val, size_t __len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga5c1bae2b20f7d5ec00411c6378b8ed70">strcat_P</a> (char *, const char *)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga105078f0de82663d9cfe4963e6bc677e">strchr_P</a> (const char *, int __val)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga0934ce6517882f4146be5a7db9b23d6b">strchrnul_P</a> (const char *, int __val)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gab0c75b8cce460448b747c29231da847c">strcmp_P</a> (const char *, const char *) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga5749897c91c479d02054fc02128de482">strcpy_P</a> (char *, const char *)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga4b2a918fb5938763024b3818ee89fbef">strcasecmp_P</a> (const char *, const char *) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gabf84fa847bf164ae7eee355a808e76fb">strcasestr_P</a> (const char *, const char *) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga8afa4577f8ce7241a948af61e6991c67">strcspn_P</a> (const char *__s, const char *__reject) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga85328d5e578db3c60f9753cb1769dc96">strlcat_P</a> (char *, const char *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gab95a4e6a4b527ee389c72bdabb991e08">strlcpy_P</a> (char *, const char *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga56e4dec5f576bb5feaa30acc4768bbf3">strnlen_P</a> (const char *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga3139220accf77b43102c23b58d249ee9">strncmp_P</a> (const char *, const char *, size_t) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga7a9100487dc0a7e5c501966c94e0ecdb">strncasecmp_P</a> (const char *, const char *, size_t) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga8641381919448f62d9caa5bd81b84fbf">strncat_P</a> (char *, const char *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga1ed6a0ea90901b8ee8478b86d1b1c99a">strncpy_P</a> (char *, const char *, size_t)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaf5e195114dcded1be939a278122fa91f">strpbrk_P</a> (const char *__s, const char *__accept) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga75ac2cdafe9afac8c75d4abf8703f2da">strrchr_P</a> (const char *, int __val)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga150a5b9ebbf493789834679bdc734857">strsep_P</a> (char **__sp, const char *__delim)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga9813accb359f237457b8dc97763ccc9f">strspn_P</a> (const char *__s, const char *__accept) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaa0f5fff512c8e23adc06844aa73c557b">strstr_P</a> (const char *, const char *) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e">strtok_P</a> (char *__s, const char *__delim)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d">strtok_rP</a> (char *__s, const char *__delim, char **__last)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga4ce249cbcdb9ff968c76a2d917072da9">strlen_PF</a> (<a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga80d8784b274a123972f1b99a4a0a6a0f">strnlen_PF</a> (<a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga13cc6cd0692aeccaac2789350a16412b">memcpy_PF</a> (void *dest, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gacd5af73767ca6defbec02736072dfb30">strcpy_PF</a> (char *dest, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga4ae01ef4b7da280c394f6d2ca37597b8">strncpy_PF</a> (char *dest, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga9530b4f628b49635c4085c269da8867a">strcat_PF</a> (char *dest, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gaf632b479b04d0c98caf94de85dc11f3e">strlcat_PF</a> (char *dst, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t siz)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga903fbfd9dcf93630e7a5da710d170da0">strncat_PF</a> (char *dest, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t len)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gad34d5b7d040fcb97939e939f19d88a5f">strcmp_PF</a> (const char *s1, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> s2) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga31c3d78d72e8dc80e192d4bd6a65529e">strncmp_PF</a> (const char *s1, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> s2, size_t n) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga319ec42a66ba8333213fa10dbe06a606">strcasecmp_PF</a> (const char *s1, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> s2) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga086db857a2372e4c84cc16204ac5292c">strncasecmp_PF</a> (const char *s1, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> s2, size_t n) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga0786ca7dc919f41f4586689aa77b04ef">strstr_PF</a> (const char *s1, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> s2)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga6674a08f95d5daedce3079b96be63008">strlcpy_PF</a> (char *dst, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> src, size_t siz)</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#ga80332272d69f05daab5f177723380175">memcmp_PF</a> (const void *, <a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a>, size_t) __ATTR_PURE__</td></tr>
|
||
|
<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__avr__pgmspace.html#gae2fb71ebed915074ec815d9d8f876c52">strlen_P</a> (const char *s)</td></tr>
|
||
|
</table>
|
||
|
<hr/><a name="_details"></a><h2>Detailed Description</h2>
|
||
|
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <<a class="code" href="io_8h.html">avr/io.h</a>></span>
|
||
|
<span class="preprocessor"> #include <<a class="code" href="pgmspace_8h.html">avr/pgmspace.h</a>></span>
|
||
|
</pre></div><p>The functions in this module provide interfaces for a program to access data stored in program space (flash memory) of the device. In order to use these functions, the target device must support either the <code>LPM</code> or <code>ELPM</code> instructions.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>These functions are an attempt to provide some compatibility with header files that come with IAR C, to make porting applications between different compilers easier. This is not 100% compatibility though (GCC does not have full support for multiple address spaces yet).</dd>
|
||
|
<dd>
|
||
|
If you are working with strings which are completely based in ram, use the standard string functions described in <a class="el" href="group__avr__string.html"><string.h>: Strings</a>.</dd>
|
||
|
<dd>
|
||
|
If possible, put your constant tables in the lower 64 KB and use <a class="el" href="group__avr__pgmspace.html#ga88d7dd4863f87530e1a34ece430a587c">pgm_read_byte_near()</a> or <a class="el" href="group__avr__pgmspace.html#gaf51eeaa847dd2668d2a66b70ecfb7398">pgm_read_word_near()</a> instead of <a class="el" href="group__avr__pgmspace.html#ga0d4d7f6231716747c52b969d4febdeed">pgm_read_byte_far()</a> or <a class="el" href="group__avr__pgmspace.html#gad7082c45c2c96f015c76eff1ad00a99a">pgm_read_word_far()</a> since it is more efficient that way, and you can still use the upper 64K for executable code. All functions that are suffixed with a <code>_P</code> <em>require</em> their arguments to be in the lower 64 KB of the flash ROM, as they do not use ELPM instructions. This is normally not a big concern as the linker setup arranges any program space constants declared using the macros from this header file so they are placed right after the interrupt vectors, and in front of any executable code. However, it can become a problem if there are too many of these constants, or for bootloaders on devices with more than 64 KB of ROM. <em>All these functions will not work in that situation.</em></dd>
|
||
|
<dd>
|
||
|
For <b>Xmega</b> devices, make sure the NVM controller command register (<code>NVM.CMD</code> or <code>NVM_CMD</code>) is set to 0x00 (NOP) before using any of these functions. </dd></dl>
|
||
|
<hr/><h2>Define Documentation</h2>
|
||
|
<a class="anchor" id="ga8ddf0e398bde8078aa9395ac77c83f0a"></a><!-- doxytag: member="pgmspace.h::pgm_get_far_address" ref="ga8ddf0e398bde8078aa9395ac77c83f0a" args="(var)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_get_far_address</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">var </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<b>Value:</b><div class="fragment"><pre class="fragment">({ \
|
||
|
<a class="code" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> tmp; \
|
||
|
\
|
||
|
__asm__ __volatile__( \
|
||
|
\
|
||
|
<span class="stringliteral">"ldi %A0, lo8(%1)"</span> <span class="stringliteral">"\n\t"</span> \
|
||
|
<span class="stringliteral">"ldi %B0, hi8(%1)"</span> <span class="stringliteral">"\n\t"</span> \
|
||
|
<span class="stringliteral">"ldi %C0, hh8(%1)"</span> <span class="stringliteral">"\n\t"</span> \
|
||
|
<span class="stringliteral">"clr %D0"</span> <span class="stringliteral">"\n\t"</span> \
|
||
|
: \
|
||
|
<span class="stringliteral">"=d"</span> (tmp) \
|
||
|
: \
|
||
|
<span class="stringliteral">"p"</span> (&(var)) \
|
||
|
); \
|
||
|
tmp; \
|
||
|
})
|
||
|
</pre></div><p>This macro facilitates the obtention of a 32 bit "far" pointer (only 24 bits used) to data even passed the 64KB limit for the 16 bit ordinary pointer. It is similar to the '&' operator, with some limitations.</p>
|
||
|
<p>Comments:</p>
|
||
|
<ul>
|
||
|
<li>The overhead is minimal and it's mainly due to the 32 bit size operation.</li>
|
||
|
</ul>
|
||
|
<ul>
|
||
|
<li>24 bit sizes guarantees the code compatibility for use in future devices.</li>
|
||
|
</ul>
|
||
|
<ul>
|
||
|
<li>hh8() is an undocumented feature but seems to give the third significant byte of a 32 bit data and accepts symbols, complementing the functionality of hi8() and lo8(). There is not an equivalent assembler function to get the high significant byte.</li>
|
||
|
</ul>
|
||
|
<ul>
|
||
|
<li>'var' has to be resolved at linking time as an existing symbol, i.e, a simple type variable name, an array name (not an indexed element of the array, if the index is a constant the compiler does not complain but fails to get the address if optimization is enabled), a struct name or a struct field name, a function identifier, a linker defined identifier,...</li>
|
||
|
</ul>
|
||
|
<ul>
|
||
|
<li>The returned value is the identifier's VMA (virtual memory address) determined by the linker and falls in the corresponding memory region. The AVR Harvard architecture requires non overlapping VMA areas for the multiple address spaces in the processor: Flash ROM, RAM, and EEPROM. Typical offset for this are 0x00000000, 0x00800xx0, and 0x00810000 respectively, derived from the linker script used and linker options. The value returned can be seen then as a universal pointer. </li>
|
||
|
</ul>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga963f816fc88a5d8479c285ed4c630229"></a><!-- doxytag: member="pgmspace.h::PGM_P" ref="ga963f816fc88a5d8479c285ed4c630229" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define PGM_P const char *</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Used to declare a variable that is a pointer to a string in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga73084a8bbde259ffae72980354b3f027"></a><!-- doxytag: member="pgmspace.h::pgm_read_byte" ref="ga73084a8bbde259ffae72980354b3f027" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_byte</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> pgm_read_byte_near(address_short)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a byte from the program space with a 16-bit (near) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga0d4d7f6231716747c52b969d4febdeed"></a><!-- doxytag: member="pgmspace.h::pgm_read_byte_far" ref="ga0d4d7f6231716747c52b969d4febdeed" args="(address_long)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_byte_far</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_long </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __ELPM((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a byte from the program space with a 32-bit (far) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga88d7dd4863f87530e1a34ece430a587c"></a><!-- doxytag: member="pgmspace.h::pgm_read_byte_near" ref="ga88d7dd4863f87530e1a34ece430a587c" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_byte_near</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __LPM((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a byte from the program space with a 16-bit (near) address. </p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gabb68859ac5dfa6a09ac048b4037a83b6"></a><!-- doxytag: member="pgmspace.h::pgm_read_dword" ref="gabb68859ac5dfa6a09ac048b4037a83b6" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_dword</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> pgm_read_dword_near(address_short)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a double word from the program space with a 16-bit (near) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga309908c1b7430f0d140edb78fcf8f2b9"></a><!-- doxytag: member="pgmspace.h::pgm_read_dword_far" ref="ga309908c1b7430f0d140edb78fcf8f2b9" args="(address_long)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_dword_far</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_long </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __ELPM_dword((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a double word from the program space with a 32-bit (far) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga7fa92c0a662403a643859e0f33b0a182"></a><!-- doxytag: member="pgmspace.h::pgm_read_dword_near" ref="ga7fa92c0a662403a643859e0f33b0a182" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_dword_near</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __LPM_dword((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a double word from the program space with a 16-bit (near) address. </p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga7911bddb066a8a038efc4b7857728fa8"></a><!-- doxytag: member="pgmspace.h::pgm_read_float" ref="ga7911bddb066a8a038efc4b7857728fa8" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_float</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> pgm_read_float_near(address_short)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a float from the program space with a 16-bit (near) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga4a5a593aa84062ca08b3f2d564a6f466"></a><!-- doxytag: member="pgmspace.h::pgm_read_float_far" ref="ga4a5a593aa84062ca08b3f2d564a6f466" args="(address_long)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_float_far</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_long </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __ELPM_float((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a float from the program space with a 32-bit (far) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga066040df814dabc7980cd1422508b46b"></a><!-- doxytag: member="pgmspace.h::pgm_read_float_near" ref="ga066040df814dabc7980cd1422508b46b" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_float_near</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __LPM_float((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a float from the program space with a 16-bit (near) address. </p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gac9f61931fd8cf4cf4764744dbaee81b6"></a><!-- doxytag: member="pgmspace.h::pgm_read_ptr" ref="gac9f61931fd8cf4cf4764744dbaee81b6" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_ptr</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> pgm_read_ptr_near(address_short)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a pointer from the program space with a 16-bit (near) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaa7756dce7bcc8ba46e648981fafebbf2"></a><!-- doxytag: member="pgmspace.h::pgm_read_ptr_far" ref="gaa7756dce7bcc8ba46e648981fafebbf2" args="(address_long)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_ptr_far</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_long </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> (void*)__ELPM_word((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a pointer from the program space with a 32-bit (far) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gadcfd4df2e156efc1f6a380dfc58a5b81"></a><!-- doxytag: member="pgmspace.h::pgm_read_ptr_near" ref="gadcfd4df2e156efc1f6a380dfc58a5b81" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_ptr_near</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> (void*)__LPM_word((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a pointer from the program space with a 16-bit (near) address. </p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga32d8ab354156f4b1ffdb77a275ba6223"></a><!-- doxytag: member="pgmspace.h::pgm_read_word" ref="ga32d8ab354156f4b1ffdb77a275ba6223" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_word</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> pgm_read_word_near(address_short)</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a word from the program space with a 16-bit (near) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gad7082c45c2c96f015c76eff1ad00a99a"></a><!-- doxytag: member="pgmspace.h::pgm_read_word_far" ref="gad7082c45c2c96f015c76eff1ad00a99a" args="(address_long)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_word_far</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_long </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __ELPM_word((<a class="el" href="group__avr__stdint.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>)(address_long))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a word from the program space with a 32-bit (far) address.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaf51eeaa847dd2668d2a66b70ecfb7398"></a><!-- doxytag: member="pgmspace.h::pgm_read_word_near" ref="gaf51eeaa847dd2668d2a66b70ecfb7398" args="(address_short)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define pgm_read_word_near</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">address_short </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> __LPM_word((<a class="el" href="group__avr__stdint.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>)(address_short))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Read a word from the program space with a 16-bit (near) address. </p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>The address is a byte address. The address is in the program space. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga84a61d55b7efefabd8419e28f02704f9"></a><!-- doxytag: member="pgmspace.h::PGM_VOID_P" ref="ga84a61d55b7efefabd8419e28f02704f9" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define PGM_VOID_P const void *</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Used to declare a generic pointer to an object in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga75acaba9e781937468d0911423bc0c35"></a><!-- doxytag: member="pgmspace.h::PROGMEM" ref="ga75acaba9e781937468d0911423bc0c35" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define PROGMEM __ATTR_PROGMEM__</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Attribute to use in order to declare an object being located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga05ca900ebf7cd121be73c654d9ccb3eb"></a><!-- doxytag: member="pgmspace.h::PSTR" ref="ga05ca900ebf7cd121be73c654d9ccb3eb" args="(s)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">#define PSTR</td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">s </td>
|
||
|
<td class="paramname"></td>
|
||
|
<td> ) </td>
|
||
|
<td> ((const PROGMEM char *)(s))</td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>Used to declare a static pointer to a string in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<hr/><h2>Typedef Documentation</h2>
|
||
|
<a class="anchor" id="gaa475b6b81fd8b34de45695da1da523b6"></a><!-- doxytag: member="pgmspace.h::prog_char" ref="gaa475b6b81fd8b34de45695da1da523b6" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#gaa475b6b81fd8b34de45695da1da523b6">prog_char</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of a "char" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaafc910d0b2c4d76afffa4710b98df6fa"></a><!-- doxytag: member="pgmspace.h::prog_int16_t" ref="gaafc910d0b2c4d76afffa4710b98df6fa" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#gaafc910d0b2c4d76afffa4710b98df6fa">prog_int16_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "int16_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaa839901aa518fb43d361588dd8d2b44b"></a><!-- doxytag: member="pgmspace.h::prog_int32_t" ref="gaa839901aa518fb43d361588dd8d2b44b" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#gaa839901aa518fb43d361588dd8d2b44b">prog_int32_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "int32_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga5b1f9927f06d841e9ac07af62e71cfef"></a><!-- doxytag: member="pgmspace.h::prog_int64_t" ref="ga5b1f9927f06d841e9ac07af62e71cfef" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga5b1f9927f06d841e9ac07af62e71cfef">prog_int64_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "int64_t" object located in flash ROM.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>This type is not available when the compiler option -mint8 is in effect. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga48c7cb011ea5f82f4b73df40e07dff46"></a><!-- doxytag: member="pgmspace.h::prog_int8_t" ref="ga48c7cb011ea5f82f4b73df40e07dff46" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga48c7cb011ea5f82f4b73df40e07dff46">prog_int8_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "int8_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga7d4701843a2019e3ef5a9866dc7586ed"></a><!-- doxytag: member="pgmspace.h::prog_uchar" ref="ga7d4701843a2019e3ef5a9866dc7586ed" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga7d4701843a2019e3ef5a9866dc7586ed">prog_uchar</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "unsigned char" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga93ec00229866bf6a125384ad08cefa73"></a><!-- doxytag: member="pgmspace.h::prog_uint16_t" ref="ga93ec00229866bf6a125384ad08cefa73" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga93ec00229866bf6a125384ad08cefa73">prog_uint16_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "uint16_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga31bad0d22ead95a41e725c38ea63eb26"></a><!-- doxytag: member="pgmspace.h::prog_uint32_t" ref="ga31bad0d22ead95a41e725c38ea63eb26" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga31bad0d22ead95a41e725c38ea63eb26">prog_uint32_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "uint32_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaa50eebe90a40e0276bcc49ea0482b211"></a><!-- doxytag: member="pgmspace.h::prog_uint64_t" ref="gaa50eebe90a40e0276bcc49ea0482b211" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#gaa50eebe90a40e0276bcc49ea0482b211">prog_uint64_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "uint64_t" object located in flash ROM.</p>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>This type is not available when the compiler option -mint8 is in effect. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga39235a28487ae7790ce5f4c8178c8ed7"></a><!-- doxytag: member="pgmspace.h::prog_uint8_t" ref="ga39235a28487ae7790ce5f4c8178c8ed7" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#ga39235a28487ae7790ce5f4c8178c8ed7">prog_uint8_t</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of an "uint8_t" object located in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gadb50761b9f19d45449445208778ee420"></a><!-- doxytag: member="pgmspace.h::prog_void" ref="gadb50761b9f19d45449445208778ee420" args="" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname"><a class="el" href="group__avr__pgmspace.html#gadb50761b9f19d45449445208778ee420">prog_void</a></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd>DEPRECATED</dd></dl>
|
||
|
<p>This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this is now the recommended usage.</p>
|
||
|
<p>The typedef is only visible if the macro __PROG_TYPES_COMPAT__ has been defined before including <<a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a>> (either by a <code>#define</code> directive, or by a -D compiler option.)</p>
|
||
|
<p>Type of a "void" object located in flash ROM. Does not make much sense by itself, but can be used to declare a "void *" object in flash ROM. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<hr/><h2>Function Documentation</h2>
|
||
|
<a class="anchor" id="ga469016cff9c68b19838ad26e099b0fc3"></a><!-- doxytag: member="pgmspace.h::memccpy_P" ref="ga469016cff9c68b19838ad26e099b0fc3" args="(void *, const void *, int __val, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">void * memccpy_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">void * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>val</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>This function is similar to <a class="el" href="group__avr__string.html#ga8f2913a691990ae107e9687b8949b553" title="Copy memory area.">memccpy()</a> except that <code>src</code> is pointer to a string in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga44f0b73a84e00da51ae135affc706b34"></a><!-- doxytag: member="pgmspace.h::memchr_P" ref="ga44f0b73a84e00da51ae135affc706b34" args="(const void *, int __val, size_t __len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">const void * memchr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>val</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Scan flash memory for a character. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga44f0b73a84e00da51ae135affc706b34" title="Scan flash memory for a character.">memchr_P()</a> function scans the first <code>len</code> bytes of the flash memory area pointed to by <code>s</code> for the character <code>val</code>. The first byte to match <code>val</code> (interpreted as an unsigned character) stops the operation.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga44f0b73a84e00da51ae135affc706b34" title="Scan flash memory for a character.">memchr_P()</a> function returns a pointer to the matching byte or <code>NULL</code> if the character does not occur in the given memory area. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gab1b0b56685303c2452e98914e7e5d6d0"></a><!-- doxytag: member="pgmspace.h::memcmp_P" ref="gab1b0b56685303c2452e98914e7e5d6d0" args="(const void *, const void *, size_t) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int memcmp_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare memory areas. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gab1b0b56685303c2452e98914e7e5d6d0" title="Compare memory areas.">memcmp_P()</a> function compares the first <code>len</code> bytes of the memory areas <code>s1</code> and flash <code>s2</code>. The comparision is performed using unsigned char operations.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gab1b0b56685303c2452e98914e7e5d6d0" title="Compare memory areas.">memcmp_P()</a> function returns an integer less than, equal to, or greater than zero if the first <code>len</code> bytes of <code>s1</code> is found, respectively, to be less than, to match, or be greater than the first <code>len</code> bytes of <code>s2</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga80332272d69f05daab5f177723380175"></a><!-- doxytag: member="pgmspace.h::memcmp_PF" ref="ga80332272d69f05daab5f177723380175" args="(const void *, uint_farptr_t, size_t) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int memcmp_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare memory areas. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga80332272d69f05daab5f177723380175" title="Compare memory areas.">memcmp_PF()</a> function compares the first <code>len</code> bytes of the memory areas <code>s1</code> and flash <code>s2</code>. The comparision is performed using unsigned char operations. It is an equivalent of <a class="el" href="group__avr__pgmspace.html#gab1b0b56685303c2452e98914e7e5d6d0" title="Compare memory areas.">memcmp_P()</a> function, except that it is capable working on all FLASH including the exteded area above 64kB.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga80332272d69f05daab5f177723380175" title="Compare memory areas.">memcmp_PF()</a> function returns an integer less than, equal to, or greater than zero if the first <code>len</code> bytes of <code>s1</code> is found, respectively, to be less than, to match, or be greater than the first <code>len</code> bytes of <code>s2</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gad92fa2ebe26e65fa424051047d21a0eb"></a><!-- doxytag: member="pgmspace.h::memcpy_P" ref="gad92fa2ebe26e65fa424051047d21a0eb" args="(void *, const void *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">void * memcpy_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">void * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gad92fa2ebe26e65fa424051047d21a0eb">memcpy_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga5f60008005ea7557430149926cf583d7" title="Copy a memory area.">memcpy()</a>, except the src string resides in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gad92fa2ebe26e65fa424051047d21a0eb">memcpy_P()</a> function returns a pointer to dest. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga13cc6cd0692aeccaac2789350a16412b"></a><!-- doxytag: member="pgmspace.h::memcpy_PF" ref="ga13cc6cd0692aeccaac2789350a16412b" args="(void *dest, uint_farptr_t src, size_t len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">void * memcpy_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">void * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Copy a memory block from flash to SRAM. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga13cc6cd0692aeccaac2789350a16412b" title="Copy a memory block from flash to SRAM.">memcpy_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga5f60008005ea7557430149926cf583d7" title="Copy a memory area.">memcpy()</a>, except the data is copied from the program space and is addressed using a far pointer.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>A pointer to the destination buffer </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the origin of data in flash memory </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The number of bytes to be copied</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga13cc6cd0692aeccaac2789350a16412b" title="Copy a memory block from flash to SRAM.">memcpy_PF()</a> function returns a pointer to <em>dst</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaee844cc0ac8f736e6599dbaae1fba328"></a><!-- doxytag: member="pgmspace.h::memmem_P" ref="gaee844cc0ac8f736e6599dbaae1fba328" args="(const void *, size_t, const void *, size_t) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">void * memmem_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gaee844cc0ac8f736e6599dbaae1fba328">memmem_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga1c22a39c9d936f18aa0764e331e3cddc">memmem()</a> except that <code>s2</code> is pointer to a string in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga8dd5ea616f34e8fdc2ae4fa9452d8a88"></a><!-- doxytag: member="pgmspace.h::memrchr_P" ref="ga8dd5ea616f34e8fdc2ae4fa9452d8a88" args="(const void *, int __val, size_t __len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">const void memrchr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const void * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>val</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga8dd5ea616f34e8fdc2ae4fa9452d8a88">memrchr_P()</a> function is like the <a class="el" href="group__avr__pgmspace.html#ga44f0b73a84e00da51ae135affc706b34" title="Scan flash memory for a character.">memchr_P()</a> function, except that it searches backwards from the end of the <code>len</code> bytes pointed to by <code>src</code> instead of forwards from the front. (Glibc, GNU extension.)</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga8dd5ea616f34e8fdc2ae4fa9452d8a88">memrchr_P()</a> function returns a pointer to the matching byte or <code>NULL</code> if the character does not occur in the given memory area. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga4b2a918fb5938763024b3818ee89fbef"></a><!-- doxytag: member="pgmspace.h::strcasecmp_P" ref="ga4b2a918fb5938763024b3818ee89fbef" args="(const char *, const char *) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strcasecmp_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare two strings ignoring case. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga4b2a918fb5938763024b3818ee89fbef" title="Compare two strings ignoring case.">strcasecmp_P()</a> function compares the two strings <code>s1</code> and <code>s2</code>, ignoring the case of the characters.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to a string in the devices SRAM. </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A pointer to a string in the devices Flash.</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga4b2a918fb5938763024b3818ee89fbef" title="Compare two strings ignoring case.">strcasecmp_P()</a> function returns an integer less than, equal to, or greater than zero if <code>s1</code> is found, respectively, to be less than, to match, or be greater than <code>s2</code>. A consequence of the ordering used by <a class="el" href="group__avr__pgmspace.html#ga4b2a918fb5938763024b3818ee89fbef" title="Compare two strings ignoring case.">strcasecmp_P()</a> is that if <code>s1</code> is an initial substring of <code>s2</code>, then <code>s1</code> is considered to be "less than" <code>s2</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga319ec42a66ba8333213fa10dbe06a606"></a><!-- doxytag: member="pgmspace.h::strcasecmp_PF" ref="ga319ec42a66ba8333213fa10dbe06a606" args="(const char *s1, uint_farptr_t s2) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strcasecmp_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare two strings ignoring case. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga319ec42a66ba8333213fa10dbe06a606" title="Compare two strings ignoring case.">strcasecmp_PF()</a> function compares the two strings <em>s1</em> and <em>s2</em>, ignoring the case of the characters.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to the first string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A far pointer to the second string in Flash</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga319ec42a66ba8333213fa10dbe06a606" title="Compare two strings ignoring case.">strcasecmp_PF()</a> function returns an integer less than, equal to, or greater than zero if <em>s1</em> is found, respectively, to be less than, to match, or be greater than <em>s2</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gabf84fa847bf164ae7eee355a808e76fb"></a><!-- doxytag: member="pgmspace.h::strcasestr_P" ref="gabf84fa847bf164ae7eee355a808e76fb" args="(const char *, const char *) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strcasestr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>This funtion is similar to <a class="el" href="group__avr__string.html#gae240697c78aee7b9c47cb2c9452526ea">strcasestr()</a> except that <code>s2</code> is pointer to a string in program space. </p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga5c1bae2b20f7d5ec00411c6378b8ed70"></a><!-- doxytag: member="pgmspace.h::strcat_P" ref="ga5c1bae2b20f7d5ec00411c6378b8ed70" args="(char *, const char *)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strcat_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga5c1bae2b20f7d5ec00411c6378b8ed70">strcat_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga1fd2a6e188f02599e5eeb17519f67f3e" title="Concatenate two strings.">strcat()</a> except that the <em>src</em> string must be located in program space (flash).</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__string.html#ga1fd2a6e188f02599e5eeb17519f67f3e" title="Concatenate two strings.">strcat()</a> function returns a pointer to the resulting string <em>dest</em>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga9530b4f628b49635c4085c269da8867a"></a><!-- doxytag: member="pgmspace.h::strcat_PF" ref="ga9530b4f628b49635c4085c269da8867a" args="(char *dest, uint_farptr_t src)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strcat_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Concatenates two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga9530b4f628b49635c4085c269da8867a" title="Concatenates two strings.">strcat_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga1fd2a6e188f02599e5eeb17519f67f3e" title="Concatenate two strings.">strcat()</a> except that the <em>src</em> string must be located in program space (flash) and is addressed using a far pointer</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dst</em> </td><td>A pointer to the destination string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the string to be appended in Flash</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga9530b4f628b49635c4085c269da8867a" title="Concatenates two strings.">strcat_PF()</a> function returns a pointer to the resulting string <em>dst</em>. The contents of RAMPZ SFR are undefined when the function returns </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga105078f0de82663d9cfe4963e6bc677e"></a><!-- doxytag: member="pgmspace.h::strchr_P" ref="ga105078f0de82663d9cfe4963e6bc677e" args="(const char *, int __val)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">const char * strchr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>val</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Locate character in program space string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga105078f0de82663d9cfe4963e6bc677e" title="Locate character in program space string.">strchr_P()</a> function locates the first occurrence of <code>val</code> (converted to a char) in the string pointed to by <code>s</code> in program space. The terminating null character is considered to be part of the string.</p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga105078f0de82663d9cfe4963e6bc677e" title="Locate character in program space string.">strchr_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga4a03589020c79fa0b93673634bef711b" title="Locate character in string.">strchr()</a> except that <code>s</code> is pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga105078f0de82663d9cfe4963e6bc677e" title="Locate character in program space string.">strchr_P()</a> function returns a pointer to the matched character or <code>NULL</code> if the character is not found. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga0934ce6517882f4146be5a7db9b23d6b"></a><!-- doxytag: member="pgmspace.h::strchrnul_P" ref="ga0934ce6517882f4146be5a7db9b23d6b" args="(const char *, int __val)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">const char * strchrnul_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>c</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga0934ce6517882f4146be5a7db9b23d6b">strchrnul_P()</a> function is like <a class="el" href="group__avr__pgmspace.html#ga105078f0de82663d9cfe4963e6bc677e" title="Locate character in program space string.">strchr_P()</a> except that if <code>c</code> is not found in <code>s</code>, then it returns a pointer to the null byte at the end of <code>s</code>, rather than <code>NULL</code>. (Glibc, GNU extension.)</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga0934ce6517882f4146be5a7db9b23d6b">strchrnul_P()</a> function returns a pointer to the matched character, or a pointer to the null byte at the end of <code>s</code> (i.e., <code>s+strlen</code>(s)) if the character is not found. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gab0c75b8cce460448b747c29231da847c"></a><!-- doxytag: member="pgmspace.h::strcmp_P" ref="gab0c75b8cce460448b747c29231da847c" args="(const char *, const char *) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strcmp_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gab0c75b8cce460448b747c29231da847c">strcmp_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga46f3cbd2de457c0fb340a1f379fc33ba" title="Compare two strings.">strcmp()</a> except that <code>s2</code> is pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gab0c75b8cce460448b747c29231da847c">strcmp_P()</a> function returns an integer less than, equal to, or greater than zero if <code>s1</code> is found, respectively, to be less than, to match, or be greater than <code>s2</code>. A consequence of the ordering used by <a class="el" href="group__avr__pgmspace.html#gab0c75b8cce460448b747c29231da847c">strcmp_P()</a> is that if <code>s1</code> is an initial substring of <code>s2</code>, then <code>s1</code> is considered to be "less than" <code>s2</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gad34d5b7d040fcb97939e939f19d88a5f"></a><!-- doxytag: member="pgmspace.h::strcmp_PF" ref="gad34d5b7d040fcb97939e939f19d88a5f" args="(const char *s1, uint_farptr_t s2) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strcmp_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compares two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gad34d5b7d040fcb97939e939f19d88a5f" title="Compares two strings.">strcmp_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga46f3cbd2de457c0fb340a1f379fc33ba" title="Compare two strings.">strcmp()</a> except that <em>s2</em> is a far pointer to a string in program space.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to the first string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A far pointer to the second string in Flash</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gad34d5b7d040fcb97939e939f19d88a5f" title="Compares two strings.">strcmp_PF()</a> function returns an integer less than, equal to, or greater than zero if <em>s1</em> is found, respectively, to be less than, to match, or be greater than <em>s2</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga5749897c91c479d02054fc02128de482"></a><!-- doxytag: member="pgmspace.h::strcpy_P" ref="ga5749897c91c479d02054fc02128de482" args="(char *, const char *)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strcpy_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga5749897c91c479d02054fc02128de482">strcpy_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga54e4f23104fa6f722f9459d2673a1eba" title="Copy a string.">strcpy()</a> except that src is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga5749897c91c479d02054fc02128de482">strcpy_P()</a> function returns a pointer to the destination string dest. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gacd5af73767ca6defbec02736072dfb30"></a><!-- doxytag: member="pgmspace.h::strcpy_PF" ref="gacd5af73767ca6defbec02736072dfb30" args="(char *dest, uint_farptr_t src)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strcpy_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Duplicate a string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gacd5af73767ca6defbec02736072dfb30" title="Duplicate a string.">strcpy_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga54e4f23104fa6f722f9459d2673a1eba" title="Copy a string.">strcpy()</a> except that <em>src</em> is a far pointer to a string in program space.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dst</em> </td><td>A pointer to the destination string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the source string in Flash</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gacd5af73767ca6defbec02736072dfb30" title="Duplicate a string.">strcpy_PF()</a> function returns a pointer to the destination string <em>dst</em>. The contents of RAMPZ SFR are undefined when the funcion returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga8afa4577f8ce7241a948af61e6991c67"></a><!-- doxytag: member="pgmspace.h::strcspn_P" ref="ga8afa4577f8ce7241a948af61e6991c67" args="(const char *__s, const char *__reject) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strcspn_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>reject</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga8afa4577f8ce7241a948af61e6991c67">strcspn_P()</a> function calculates the length of the initial segment of <code>s</code> which consists entirely of characters not in <code>reject</code>. This function is similar to <a class="el" href="group__avr__string.html#ga53e212c1732d63bc80f649e542aff120">strcspn()</a> except that <code>reject</code> is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga8afa4577f8ce7241a948af61e6991c67">strcspn_P()</a> function returns the number of characters in the initial segment of <code>s</code> which are not in the string <code>reject</code>. The terminating zero is not considered as a part of string. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga85328d5e578db3c60f9753cb1769dc96"></a><!-- doxytag: member="pgmspace.h::strlcat_P" ref="ga85328d5e578db3c60f9753cb1769dc96" args="(char *, const char *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlcat_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>siz</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Concatenate two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga85328d5e578db3c60f9753cb1769dc96" title="Concatenate two strings.">strlcat_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga63e609bfa0d354dcd7e35b297c2e6fdd" title="Concatenate two strings.">strlcat()</a>, except that the <code>src</code> string must be located in program space (flash).</p>
|
||
|
<p>Appends <code>src</code> to string <code>dst</code> of size <code>siz</code> (unlike <a class="el" href="group__avr__string.html#gafa4a8701698b766f40180c735726cfe7" title="Concatenate two strings.">strncat()</a>, <code>siz</code> is the full size of <code>dst</code>, not space left). At most <code>siz-1</code> characters will be copied. Always NULL terminates (unless <code>siz</code> <= <code>strlen(dst)</code>).</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga85328d5e578db3c60f9753cb1769dc96" title="Concatenate two strings.">strlcat_P()</a> function returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaf632b479b04d0c98caf94de85dc11f3e"></a><!-- doxytag: member="pgmspace.h::strlcat_PF" ref="gaf632b479b04d0c98caf94de85dc11f3e" args="(char *dst, uint_farptr_t src, size_t siz)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlcat_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Concatenate two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gaf632b479b04d0c98caf94de85dc11f3e" title="Concatenate two strings.">strlcat_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga63e609bfa0d354dcd7e35b297c2e6fdd" title="Concatenate two strings.">strlcat()</a>, except that the <em>src</em> string must be located in program space (flash) and is addressed using a far pointer.</p>
|
||
|
<p>Appends src to string dst of size <em>n</em> (unlike <a class="el" href="group__avr__string.html#gafa4a8701698b766f40180c735726cfe7" title="Concatenate two strings.">strncat()</a>, <em>n</em> is the full size of <em>dst</em>, not space left). At most <em>n-1</em> characters will be copied. Always NULL terminates (unless <em>n</em> <= strlen(<em>dst</em>)).</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dst</em> </td><td>A pointer to the destination string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the source string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The total number of bytes allocated to the destination string</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gaf632b479b04d0c98caf94de85dc11f3e" title="Concatenate two strings.">strlcat_PF()</a> function returns strlen(<em>src</em>) + MIN(<em>n</em>, strlen(initial <em>dst</em>)). If retval >= <em>n</em>, truncation occurred. The contents of RAMPZ SFR are undefined when the funcion returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gab95a4e6a4b527ee389c72bdabb991e08"></a><!-- doxytag: member="pgmspace.h::strlcpy_P" ref="gab95a4e6a4b527ee389c72bdabb991e08" args="(char *, const char *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlcpy_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>siz</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Copy a string from progmem to RAM. </p>
|
||
|
<p>Copy <code>src</code> to string <code>dst</code> of size <code>siz</code>. At most <code>siz-1</code> characters will be copied. Always NULL terminates (unless <code>siz</code> == 0). The <a class="el" href="group__avr__pgmspace.html#gab95a4e6a4b527ee389c72bdabb991e08" title="Copy a string from progmem to RAM.">strlcpy_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga64bc119cf084d1ecfd95098994597f12" title="Copy a string.">strlcpy()</a> except that the <code>src</code> is pointer to a string in memory space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gab95a4e6a4b527ee389c72bdabb991e08" title="Copy a string from progmem to RAM.">strlcpy_P()</a> function returns strlen(src). If retval >= siz, truncation occurred. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga6674a08f95d5daedce3079b96be63008"></a><!-- doxytag: member="pgmspace.h::strlcpy_PF" ref="ga6674a08f95d5daedce3079b96be63008" args="(char *dst, uint_farptr_t src, size_t siz)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlcpy_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>siz</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Copy a string from progmem to RAM. </p>
|
||
|
<p>Copy src to string dst of size siz. At most siz-1 characters will be copied. Always NULL terminates (unless siz == 0).</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga6674a08f95d5daedce3079b96be63008" title="Copy a string from progmem to RAM.">strlcpy_PF()</a> function returns strlen(src). If retval >= siz, truncation occurred. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gae2fb71ebed915074ec815d9d8f876c52"></a><!-- doxytag: member="pgmspace.h::strlen_P" ref="gae2fb71ebed915074ec815d9d8f876c52" args="(const char *s)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlen_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em></td>
|
||
|
<td> ) </td>
|
||
|
<td><code> [static]</code></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gae2fb71ebed915074ec815d9d8f876c52">strlen_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga7fd4936b86eb6b87e98587044c562715" title="Calculate the length of a string.">strlen()</a>, except that src is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gae2fb71ebed915074ec815d9d8f876c52">strlen_P()</a> function returns the number of characters in src.</dd></dl>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="group__avr__pgmspace.html#gae2fb71ebed915074ec815d9d8f876c52">strlen_P()</a> is implemented as an inline function in the <a class="el" href="pgmspace_8h.html">avr/pgmspace.h</a> header file, which will check if the length of the string is a constant and known at compile time. If it is not known at compile time, the macro will issue a call to __strlen_P() which will then calculate the length of the string as normal. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga4ce249cbcdb9ff968c76a2d917072da9"></a><!-- doxytag: member="pgmspace.h::strlen_PF" ref="ga4ce249cbcdb9ff968c76a2d917072da9" args="(uint_farptr_t src)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strlen_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s</em></td>
|
||
|
<td> ) </td>
|
||
|
<td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Obtain the length of a string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga4ce249cbcdb9ff968c76a2d917072da9" title="Obtain the length of a string.">strlen_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga7fd4936b86eb6b87e98587044c562715" title="Calculate the length of a string.">strlen()</a>, except that <em>s</em> is a far pointer to a string in program space.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>A far pointer to the string in flash</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga4ce249cbcdb9ff968c76a2d917072da9" title="Obtain the length of a string.">strlen_PF()</a> function returns the number of characters in <em>s</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga7a9100487dc0a7e5c501966c94e0ecdb"></a><!-- doxytag: member="pgmspace.h::strncasecmp_P" ref="ga7a9100487dc0a7e5c501966c94e0ecdb" args="(const char *, const char *, size_t) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strncasecmp_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare two strings ignoring case. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga7a9100487dc0a7e5c501966c94e0ecdb" title="Compare two strings ignoring case.">strncasecmp_P()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#ga4b2a918fb5938763024b3818ee89fbef" title="Compare two strings ignoring case.">strcasecmp_P()</a>, except it only compares the first <code>n</code> characters of <code>s1</code>.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to a string in the devices SRAM. </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A pointer to a string in the devices Flash. </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The maximum number of bytes to compare.</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga7a9100487dc0a7e5c501966c94e0ecdb" title="Compare two strings ignoring case.">strncasecmp_P()</a> function returns an integer less than, equal to, or greater than zero if <code>s1</code> (or the first <code>n</code> bytes thereof) is found, respectively, to be less than, to match, or be greater than <code>s2</code>. A consequence of the ordering used by <a class="el" href="group__avr__pgmspace.html#ga7a9100487dc0a7e5c501966c94e0ecdb" title="Compare two strings ignoring case.">strncasecmp_P()</a> is that if <code>s1</code> is an initial substring of <code>s2</code>, then <code>s1</code> is considered to be "less than" <code>s2</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga086db857a2372e4c84cc16204ac5292c"></a><!-- doxytag: member="pgmspace.h::strncasecmp_PF" ref="ga086db857a2372e4c84cc16204ac5292c" args="(const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strncasecmp_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare two strings ignoring case. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga086db857a2372e4c84cc16204ac5292c" title="Compare two strings ignoring case.">strncasecmp_PF()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#ga319ec42a66ba8333213fa10dbe06a606" title="Compare two strings ignoring case.">strcasecmp_PF()</a>, except it only compares the first <em>n</em> characters of <em>s1</em> and the string in flash is addressed using a far pointer.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to a string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A far pointer to a string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The maximum number of bytes to compare</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga086db857a2372e4c84cc16204ac5292c" title="Compare two strings ignoring case.">strncasecmp_PF()</a> function returns an integer less than, equal to, or greater than zero if <em>s1</em> (or the first <em>n</em> bytes thereof) is found, respectively, to be less than, to match, or be greater than <em>s2</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga8641381919448f62d9caa5bd81b84fbf"></a><!-- doxytag: member="pgmspace.h::strncat_P" ref="ga8641381919448f62d9caa5bd81b84fbf" args="(char *, const char *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strncat_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Concatenate two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga8641381919448f62d9caa5bd81b84fbf" title="Concatenate two strings.">strncat_P()</a> function is similar to <a class="el" href="group__avr__string.html#gafa4a8701698b766f40180c735726cfe7" title="Concatenate two strings.">strncat()</a>, except that the <em>src</em> string must be located in program space (flash).</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga8641381919448f62d9caa5bd81b84fbf" title="Concatenate two strings.">strncat_P()</a> function returns a pointer to the resulting string dest. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga903fbfd9dcf93630e7a5da710d170da0"></a><!-- doxytag: member="pgmspace.h::strncat_PF" ref="ga903fbfd9dcf93630e7a5da710d170da0" args="(char *dest, uint_farptr_t src, size_t len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strncat_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Concatenate two strings. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga903fbfd9dcf93630e7a5da710d170da0" title="Concatenate two strings.">strncat_PF()</a> function is similar to <a class="el" href="group__avr__string.html#gafa4a8701698b766f40180c735726cfe7" title="Concatenate two strings.">strncat()</a>, except that the <em>src</em> string must be located in program space (flash) and is addressed using a far pointer.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dst</em> </td><td>A pointer to the destination string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the source string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The maximum number of bytes to append</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga903fbfd9dcf93630e7a5da710d170da0" title="Concatenate two strings.">strncat_PF()</a> function returns a pointer to the resulting string <em>dst</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga3139220accf77b43102c23b58d249ee9"></a><!-- doxytag: member="pgmspace.h::strncmp_P" ref="ga3139220accf77b43102c23b58d249ee9" args="(const char *, const char *, size_t) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strncmp_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga3139220accf77b43102c23b58d249ee9">strncmp_P()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#gab0c75b8cce460448b747c29231da847c">strcmp_P()</a> except it only compares the first (at most) n characters of s1 and s2.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga3139220accf77b43102c23b58d249ee9">strncmp_P()</a> function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga31c3d78d72e8dc80e192d4bd6a65529e"></a><!-- doxytag: member="pgmspace.h::strncmp_PF" ref="ga31c3d78d72e8dc80e192d4bd6a65529e" args="(const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">int strncmp_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Compare two strings with limited length. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga31c3d78d72e8dc80e192d4bd6a65529e" title="Compare two strings with limited length.">strncmp_PF()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#gad34d5b7d040fcb97939e939f19d88a5f" title="Compares two strings.">strcmp_PF()</a> except it only compares the first (at most) <em>n</em> characters of <em>s1</em> and <em>s2</em>.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s1</em> </td><td>A pointer to the first string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s2</em> </td><td>A far pointer to the second string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The maximum number of bytes to compare</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga31c3d78d72e8dc80e192d4bd6a65529e" title="Compare two strings with limited length.">strncmp_PF()</a> function returns an integer less than, equal to, or greater than zero if <em>s1</em> (or the first <em>n</em> bytes thereof) is found, respectively, to be less than, to match, or be greater than <em>s2</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga1ed6a0ea90901b8ee8478b86d1b1c99a"></a><!-- doxytag: member="pgmspace.h::strncpy_P" ref="ga1ed6a0ea90901b8ee8478b86d1b1c99a" args="(char *, const char *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strncpy_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dest</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga1ed6a0ea90901b8ee8478b86d1b1c99a">strncpy_P()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#ga5749897c91c479d02054fc02128de482">strcpy_P()</a> except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result will not be null-terminated.</p>
|
||
|
<p>In the case where the length of src is less than that of n, the remainder of dest will be padded with nulls.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga1ed6a0ea90901b8ee8478b86d1b1c99a">strncpy_P()</a> function returns a pointer to the destination string dest. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga4ae01ef4b7da280c394f6d2ca37597b8"></a><!-- doxytag: member="pgmspace.h::strncpy_PF" ref="ga4ae01ef4b7da280c394f6d2ca37597b8" args="(char *dest, uint_farptr_t src, size_t len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strncpy_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>dst</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>n</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Duplicate a string until a limited length. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga4ae01ef4b7da280c394f6d2ca37597b8" title="Duplicate a string until a limited length.">strncpy_PF()</a> function is similar to <a class="el" href="group__avr__pgmspace.html#gacd5af73767ca6defbec02736072dfb30" title="Duplicate a string.">strcpy_PF()</a> except that not more than <em>n</em> bytes of <em>src</em> are copied. Thus, if there is no null byte among the first <em>n</em> bytes of <em>src</em>, the result will not be null-terminated.</p>
|
||
|
<p>In the case where the length of <em>src</em> is less than that of <em>n</em>, the remainder of <em>dst</em> will be padded with nulls.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>dst</em> </td><td>A pointer to the destination string in SRAM </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>A far pointer to the source string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>The maximum number of bytes to copy</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga4ae01ef4b7da280c394f6d2ca37597b8" title="Duplicate a string until a limited length.">strncpy_PF()</a> function returns a pointer to the destination string <em>dst</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga56e4dec5f576bb5feaa30acc4768bbf3"></a><!-- doxytag: member="pgmspace.h::strnlen_P" ref="ga56e4dec5f576bb5feaa30acc4768bbf3" args="(const char *, size_t)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strnlen_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>src</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Determine the length of a fixed-size string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga56e4dec5f576bb5feaa30acc4768bbf3" title="Determine the length of a fixed-size string.">strnlen_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga3d3e512a095039a7e2f86859537d761b" title="Determine the length of a fixed-size string.">strnlen()</a>, except that <code>src</code> is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The strnlen_P function returns strlen_P(src), if that is less than <code>len</code>, or <code>len</code> if there is no '\0' character among the first <code>len</code> characters pointed to by <code>src</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga80d8784b274a123972f1b99a4a0a6a0f"></a><!-- doxytag: member="pgmspace.h::strnlen_PF" ref="ga80d8784b274a123972f1b99a4a0a6a0f" args="(uint_farptr_t src, size_t len)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strnlen_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">size_t </td>
|
||
|
<td class="paramname"> <em>len</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Determine the length of a fixed-size string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga80d8784b274a123972f1b99a4a0a6a0f" title="Determine the length of a fixed-size string.">strnlen_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga3d3e512a095039a7e2f86859537d761b" title="Determine the length of a fixed-size string.">strnlen()</a>, except that <em>s</em> is a far pointer to a string in program space.</p>
|
||
|
<dl><dt><b>Parameters:</b></dt><dd>
|
||
|
<table border="0" cellspacing="2" cellpadding="0">
|
||
|
<tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>A far pointer to the string in Flash </td></tr>
|
||
|
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>The maximum number of length to return</td></tr>
|
||
|
</table>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The strnlen_PF function returns strlen_P(<em>s</em>), if that is less than <em>len</em>, or <em>len</em> if there is no '\0' character among the first <em>len</em> characters pointed to by <em>s</em>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaf5e195114dcded1be939a278122fa91f"></a><!-- doxytag: member="pgmspace.h::strpbrk_P" ref="gaf5e195114dcded1be939a278122fa91f" args="(const char *__s, const char *__accept) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strpbrk_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>accept</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gaf5e195114dcded1be939a278122fa91f">strpbrk_P()</a> function locates the first occurrence in the string <code>s</code> of any of the characters in the flash string <code>accept</code>. This function is similar to <a class="el" href="group__avr__string.html#ga386481b53df5f2437a1da78b400b6440">strpbrk()</a> except that <code>accept</code> is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gaf5e195114dcded1be939a278122fa91f">strpbrk_P()</a> function returns a pointer to the character in <code>s</code> that matches one of the characters in <code>accept</code>, or <code>NULL</code> if no such character is found. The terminating zero is not considered as a part of string: if one or both args are empty, the result will <code>NULL</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga75ac2cdafe9afac8c75d4abf8703f2da"></a><!-- doxytag: member="pgmspace.h::strrchr_P" ref="ga75ac2cdafe9afac8c75d4abf8703f2da" args="(const char *, int __val)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">const char * strrchr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">int </td>
|
||
|
<td class="paramname"> <em>val</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Locate character in string. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga75ac2cdafe9afac8c75d4abf8703f2da" title="Locate character in string.">strrchr_P()</a> function returns a pointer to the last occurrence of the character <code>val</code> in the flash string <code>s</code>.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga75ac2cdafe9afac8c75d4abf8703f2da" title="Locate character in string.">strrchr_P()</a> function returns a pointer to the matched character or <code>NULL</code> if the character is not found. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga150a5b9ebbf493789834679bdc734857"></a><!-- doxytag: member="pgmspace.h::strsep_P" ref="ga150a5b9ebbf493789834679bdc734857" args="(char **__sp, const char *__delim)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strsep_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char ** </td>
|
||
|
<td class="paramname"> <em>sp</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>delim</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Parse a string into tokens. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga150a5b9ebbf493789834679bdc734857" title="Parse a string into tokens.">strsep_P()</a> function locates, in the string referenced by <code>*sp</code>, the first occurrence of any character in the string <code>delim</code> (or the terminating '\0' character) and replaces it with a '\0'. The location of the next character after the delimiter character (or <code>NULL</code>, if the end of the string was reached) is stored in <code>*sp</code>. An ``empty'' field, i.e. one caused by two adjacent delimiter characters, can be detected by comparing the location referenced by the pointer returned in <code>*sp</code> to '\0'. This function is similar to <a class="el" href="group__avr__string.html#gaff88adec2ad0446259766197ec3863de" title="Parse a string into tokens.">strsep()</a> except that <code>delim</code> is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga150a5b9ebbf493789834679bdc734857" title="Parse a string into tokens.">strsep_P()</a> function returns a pointer to the original value of <code>*sp</code>. If <code>*sp</code> is initially <code>NULL</code>, <a class="el" href="group__avr__pgmspace.html#ga150a5b9ebbf493789834679bdc734857" title="Parse a string into tokens.">strsep_P()</a> returns <code>NULL</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga9813accb359f237457b8dc97763ccc9f"></a><!-- doxytag: member="pgmspace.h::strspn_P" ref="ga9813accb359f237457b8dc97763ccc9f" args="(const char *__s, const char *__accept) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">size_t strspn_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>accept</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga9813accb359f237457b8dc97763ccc9f">strspn_P()</a> function calculates the length of the initial segment of <code>s</code> which consists entirely of characters in <code>accept</code>. This function is similar to <a class="el" href="group__avr__string.html#gacbc51d76d5f8f4cacf27238494d866d8">strspn()</a> except that <code>accept</code> is a pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga9813accb359f237457b8dc97763ccc9f">strspn_P()</a> function returns the number of characters in the initial segment of <code>s</code> which consist only of characters from <code>accept</code>. The terminating zero is not considered as a part of string. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="gaa0f5fff512c8e23adc06844aa73c557b"></a><!-- doxytag: member="pgmspace.h::strstr_P" ref="gaa0f5fff512c8e23adc06844aa73c557b" args="(const char *, const char *) __ATTR_PURE__" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strstr_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Locate a substring. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#gaa0f5fff512c8e23adc06844aa73c557b" title="Locate a substring.">strstr_P()</a> function finds the first occurrence of the substring <code>s2</code> in the string <code>s1</code>. The terminating '\0' characters are not compared. The <a class="el" href="group__avr__pgmspace.html#gaa0f5fff512c8e23adc06844aa73c557b" title="Locate a substring.">strstr_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga6a441da9211eb85881d99c60b1003552" title="Locate a substring.">strstr()</a> except that <code>s2</code> is pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#gaa0f5fff512c8e23adc06844aa73c557b" title="Locate a substring.">strstr_P()</a> function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If <code>s2</code> points to a string of zero length, the function returns <code>s1</code>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga0786ca7dc919f41f4586689aa77b04ef"></a><!-- doxytag: member="pgmspace.h::strstr_PF" ref="ga0786ca7dc919f41f4586689aa77b04ef" args="(const char *s1, uint_farptr_t s2)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strstr_PF </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>s1</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype"><a class="el" href="group__avr__inttypes.html#ga72b6692e3f3123903c1a0d9a960c59b1">uint_farptr_t</a> </td>
|
||
|
<td class="paramname"> <em>s2</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Locate a substring. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga0786ca7dc919f41f4586689aa77b04ef" title="Locate a substring.">strstr_PF()</a> function finds the first occurrence of the substring <code>s2</code> in the string <code>s1</code>. The terminating '\0' characters are not compared. The <a class="el" href="group__avr__pgmspace.html#ga0786ca7dc919f41f4586689aa77b04ef" title="Locate a substring.">strstr_PF()</a> function is similar to <a class="el" href="group__avr__string.html#ga6a441da9211eb85881d99c60b1003552" title="Locate a substring.">strstr()</a> except that <code>s2</code> is a far pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga0786ca7dc919f41f4586689aa77b04ef" title="Locate a substring.">strstr_PF()</a> function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If <code>s2</code> points to a string of zero length, the function returns <code>s1</code>. The contents of RAMPZ SFR are undefined when the function returns. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga9c3f78c82b898b95834b7f1d695eb95e"></a><!-- doxytag: member="pgmspace.h::strtok_P" ref="ga9c3f78c82b898b95834b7f1d695eb95e" args="(char *__s, const char *__delim)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strtok_P </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>s</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>delim</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Parses the string into tokens. </p>
|
||
|
<p><a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a> parses the string <code>s</code> into tokens. The first call to <a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a> should have <code>s</code> as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\0' and a pointer to the next character is saved for the next call to <a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a>. The delimiter string <code>delim</code> may be different for each call.</p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a> function is similar to <a class="el" href="group__avr__string.html#ga6ace85338eafe22a0ff52c00eb9779b8" title="Parses the string s into tokens.">strtok()</a> except that <code>delim</code> is pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a> function returns a pointer to the next token or NULL when no more tokens are found.</dd></dl>
|
||
|
<dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a> is NOT reentrant. For a reentrant version of this function see <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a>. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<a class="anchor" id="ga48e69ae320350218ad89b18f01df120d"></a><!-- doxytag: member="pgmspace.h::strtok_rP" ref="ga48e69ae320350218ad89b18f01df120d" args="(char *__s, const char *__delim, char **__last)" -->
|
||
|
<div class="memitem">
|
||
|
<div class="memproto">
|
||
|
<table class="memname">
|
||
|
<tr>
|
||
|
<td class="memname">char * strtok_rP </td>
|
||
|
<td>(</td>
|
||
|
<td class="paramtype">char * </td>
|
||
|
<td class="paramname"> <em>string</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">const char * </td>
|
||
|
<td class="paramname"> <em>delim</em>, </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="paramkey"></td>
|
||
|
<td></td>
|
||
|
<td class="paramtype">char ** </td>
|
||
|
<td class="paramname"> <em>last</em></td><td> </td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td></td>
|
||
|
<td>)</td>
|
||
|
<td></td><td></td><td></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</div>
|
||
|
<div class="memdoc">
|
||
|
|
||
|
<p>Parses string into tokens. </p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a> function parses <code>string</code> into tokens. The first call to <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a> should have string as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\0' and a pointer to the next character is saved for the next call to <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a>. The delimiter string <code>delim</code> may be different for each call. <code>last</code> is a user allocated char* pointer. It must be the same while parsing the same string. <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a> is a reentrant version of <a class="el" href="group__avr__pgmspace.html#ga9c3f78c82b898b95834b7f1d695eb95e" title="Parses the string into tokens.">strtok_P()</a>.</p>
|
||
|
<p>The <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a> function is similar to <a class="el" href="group__avr__string.html#gac0dbc25e8b202114031a4aa2a7c5177b" title="Parses string into tokens.">strtok_r()</a> except that <code>delim</code> is pointer to a string in program space.</p>
|
||
|
<dl class="return"><dt><b>Returns:</b></dt><dd>The <a class="el" href="group__avr__pgmspace.html#ga48e69ae320350218ad89b18f01df120d" title="Parses string into tokens.">strtok_rP()</a> function returns a pointer to the next token or NULL when no more tokens are found. </dd></dl>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!--- window showing the filter options -->
|
||
|
<div id="MSearchSelectWindow"
|
||
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
||
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
||
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Defines</a></div>
|
||
|
|
||
|
<!-- iframe showing the search results (closed by default) -->
|
||
|
<div id="MSearchResultsWindow">
|
||
|
<iframe src="" frameborder="0"
|
||
|
name="MSearchResults" id="MSearchResults">
|
||
|
</iframe>
|
||
|
</div>
|
||
|
|
||
|
<!-- HTML footer for doxygen 1.8.7-->
|
||
|
<!-- start footer part -->
|
||
|
<!--BEGIN GENERATE_TREEVIEW-->
|
||
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||
|
<ul>
|
||
|
$navpath
|
||
|
<li class="footer">$generatedby
|
||
|
<a href="http://www.doxygen.org/index.html">
|
||
|
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> 1.6.3 </li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<!--END GENERATE_TREEVIEW-->
|
||
|
<!--BEGIN !GENERATE_TREEVIEW-->
|
||
|
<hr class="footer"/><address class="footer"><small>
|
||
|
$generatedby  <a href="http://www.doxygen.org/index.html">
|
||
|
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
|
||
|
</a> 1.6.3
|
||
|
</small></address>
|
||
|
<!--END !GENERATE_TREEVIEW-->
|
||
|
</body>
|
||
|
</html>
|