docs/api-2.1/buffer_8h.html

Sat, 06 Feb 2021 19:11:44 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 06 Feb 2021 19:11:44 +0100
changeset 390
d345541018fa
permissions
-rw-r--r--

starts ucx 3.0 development

universe@390 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
universe@390 2 <html xmlns="http://www.w3.org/1999/xhtml">
universe@390 3 <head>
universe@390 4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
universe@390 5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
universe@390 6 <meta name="generator" content="Doxygen 1.8.13"/>
universe@390 7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
universe@390 8 <title>ucx: /home/mike/workspace/c/ucx/src/ucx/buffer.h File Reference</title>
universe@390 9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
universe@390 10 <script type="text/javascript" src="jquery.js"></script>
universe@390 11 <script type="text/javascript" src="dynsections.js"></script>
universe@390 12 <link href="search/search.css" rel="stylesheet" type="text/css"/>
universe@390 13 <script type="text/javascript" src="search/searchdata.js"></script>
universe@390 14 <script type="text/javascript" src="search/search.js"></script>
universe@390 15 <link href="doxygen.css" rel="stylesheet" type="text/css" />
universe@390 16 </head>
universe@390 17 <body>
universe@390 18 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
universe@390 19 <div id="titlearea">
universe@390 20 <table cellspacing="0" cellpadding="0">
universe@390 21 <tbody>
universe@390 22 <tr style="height: 56px;">
universe@390 23 <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
universe@390 24 <td id="projectalign" style="padding-left: 0.5em;">
universe@390 25 <div id="projectname">ucx
universe@390 26 </div>
universe@390 27 <div id="projectbrief">UAP Common Extensions</div>
universe@390 28 </td>
universe@390 29 </tr>
universe@390 30 </tbody>
universe@390 31 </table>
universe@390 32 </div>
universe@390 33 <!-- end header part -->
universe@390 34 <!-- Generated by Doxygen 1.8.13 -->
universe@390 35 <script type="text/javascript">
universe@390 36 var searchBox = new SearchBox("searchBox", "search",false,'Search');
universe@390 37 </script>
universe@390 38 <script type="text/javascript" src="menudata.js"></script>
universe@390 39 <script type="text/javascript" src="menu.js"></script>
universe@390 40 <script type="text/javascript">
universe@390 41 $(function() {
universe@390 42 initMenu('',true,false,'search.php','Search');
universe@390 43 $(document).ready(function() { init_search(); });
universe@390 44 });
universe@390 45 </script>
universe@390 46 <div id="main-nav"></div>
universe@390 47 <!-- window showing the filter options -->
universe@390 48 <div id="MSearchSelectWindow"
universe@390 49 onmouseover="return searchBox.OnSearchSelectShow()"
universe@390 50 onmouseout="return searchBox.OnSearchSelectHide()"
universe@390 51 onkeydown="return searchBox.OnSearchSelectKey(event)">
universe@390 52 </div>
universe@390 53
universe@390 54 <!-- iframe showing the search results (closed by default) -->
universe@390 55 <div id="MSearchResultsWindow">
universe@390 56 <iframe src="javascript:void(0)" frameborder="0"
universe@390 57 name="MSearchResults" id="MSearchResults">
universe@390 58 </iframe>
universe@390 59 </div>
universe@390 60
universe@390 61 <div id="nav-path" class="navpath">
universe@390 62 <ul>
universe@390 63 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul>
universe@390 64 </div>
universe@390 65 </div><!-- top -->
universe@390 66 <div class="header">
universe@390 67 <div class="summary">
universe@390 68 <a href="#nested-classes">Data Structures</a> &#124;
universe@390 69 <a href="#define-members">Macros</a> &#124;
universe@390 70 <a href="#func-members">Functions</a> </div>
universe@390 71 <div class="headertitle">
universe@390 72 <div class="title">buffer.h File Reference</div> </div>
universe@390 73 </div><!--header-->
universe@390 74 <div class="contents">
universe@390 75
universe@390 76 <p>Advanced buffer implementation.
universe@390 77 <a href="#details">More...</a></p>
universe@390 78 <div class="textblock"><code>#include &quot;<a class="el" href="ucx_8h_source.html">ucx.h</a>&quot;</code><br />
universe@390 79 <code>#include &lt;sys/types.h&gt;</code><br />
universe@390 80 <code>#include &lt;stdio.h&gt;</code><br />
universe@390 81 </div>
universe@390 82 <p><a href="buffer_8h_source.html">Go to the source code of this file.</a></p>
universe@390 83 <table class="memberdecls">
universe@390 84 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
universe@390 85 Data Structures</h2></td></tr>
universe@390 86 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxBuffer.html">UcxBuffer</a></td></tr>
universe@390 87 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX Buffer. <a href="structUcxBuffer.html#details">More...</a><br /></td></tr>
universe@390 88 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 89 </table><table class="memberdecls">
universe@390 90 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
universe@390 91 Macros</h2></td></tr>
universe@390 92 <tr class="memitem:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="memItemLeft" align="right" valign="top"><a id="acc77c8ed7b26854f555d4a5d11e49ea2"></a>
universe@390 93 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#acc77c8ed7b26854f555d4a5d11e49ea2">UCX_BUFFER_DEFAULT</a>&#160;&#160;&#160;0x00</td></tr>
universe@390 94 <tr class="memdesc:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">No buffer features enabled (all flags cleared). <br /></td></tr>
universe@390 95 <tr class="separator:acc77c8ed7b26854f555d4a5d11e49ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 96 <tr class="memitem:a8bab11ad8a76719228b9ee91e2e45535"><td class="memItemLeft" align="right" valign="top"><a id="a8bab11ad8a76719228b9ee91e2e45535"></a>
universe@390 97 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535">UCX_BUFFER_AUTOFREE</a>&#160;&#160;&#160;0x01</td></tr>
universe@390 98 <tr class="memdesc:a8bab11ad8a76719228b9ee91e2e45535"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this flag is enabled, the buffer will automatically free its contents. <br /></td></tr>
universe@390 99 <tr class="separator:a8bab11ad8a76719228b9ee91e2e45535"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 100 <tr class="memitem:a05f9565f2d04399168c3b1c152a632be"><td class="memItemLeft" align="right" valign="top"><a id="a05f9565f2d04399168c3b1c152a632be"></a>
universe@390 101 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be">UCX_BUFFER_AUTOEXTEND</a>&#160;&#160;&#160;0x02</td></tr>
universe@390 102 <tr class="memdesc:a05f9565f2d04399168c3b1c152a632be"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this flag is enabled, the buffer will automatically extends its capacity. <br /></td></tr>
universe@390 103 <tr class="separator:a05f9565f2d04399168c3b1c152a632be"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 104 <tr class="memitem:a828353846428c2c2f695f9938f059e52"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a828353846428c2c2f695f9938f059e52">ucx_buffer_clone</a>(src, flags)&#160;&#160;&#160;<a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a>(src, 0, (src)-&gt;capacity, flags)</td></tr>
universe@390 105 <tr class="memdesc:a828353846428c2c2f695f9938f059e52"><td class="mdescLeft">&#160;</td><td class="mdescRight">A shorthand macro for the full extraction of the buffer. <a href="#a828353846428c2c2f695f9938f059e52">More...</a><br /></td></tr>
universe@390 106 <tr class="separator:a828353846428c2c2f695f9938f059e52"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 107 <tr class="memitem:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a374abd5aabfcc3ee0777a79d5fe651ab">ucx_buffer_clear</a>(buffer)</td></tr>
universe@390 108 <tr class="memdesc:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the buffer by resetting the position and deleting the data. <a href="#a374abd5aabfcc3ee0777a79d5fe651ab">More...</a><br /></td></tr>
universe@390 109 <tr class="separator:a374abd5aabfcc3ee0777a79d5fe651ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 110 <tr class="memitem:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a0f4b64f1b3a74c4f6c5d9409d6b6086a">ucx_buffer_to_sstr</a>(buffer)&#160;&#160;&#160;<a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>((buffer)-&gt;space, (buffer)-&gt;size)</td></tr>
universe@390 111 <tr class="memdesc:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the complete buffer content as <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a>. <a href="#a0f4b64f1b3a74c4f6c5d9409d6b6086a">More...</a><br /></td></tr>
universe@390 112 <tr class="separator:a0f4b64f1b3a74c4f6c5d9409d6b6086a"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 113 </table><table class="memberdecls">
universe@390 114 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
universe@390 115 Functions</h2></td></tr>
universe@390 116 <tr class="memitem:aacea876d692193ec6f859ce98da7351c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#aacea876d692193ec6f859ce98da7351c">ucx_buffer_new</a> (void *space, size_t capacity, int flags)</td></tr>
universe@390 117 <tr class="memdesc:aacea876d692193ec6f859ce98da7351c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new buffer. <a href="#aacea876d692193ec6f859ce98da7351c">More...</a><br /></td></tr>
universe@390 118 <tr class="separator:aacea876d692193ec6f859ce98da7351c"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 119 <tr class="memitem:a2af8646d8905c22c7322e7540b0440af"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a2af8646d8905c22c7322e7540b0440af">ucx_buffer_free</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr>
universe@390 120 <tr class="memdesc:a2af8646d8905c22c7322e7540b0440af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a buffer. <a href="#a2af8646d8905c22c7322e7540b0440af">More...</a><br /></td></tr>
universe@390 121 <tr class="separator:a2af8646d8905c22c7322e7540b0440af"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 122 <tr class="memitem:a33fa7bb35fe08bbb3542f227514332ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *src, size_t start, size_t length, int flags)</td></tr>
universe@390 123 <tr class="memdesc:a33fa7bb35fe08bbb3542f227514332ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new buffer and fills it with extracted content from another buffer. <a href="#a33fa7bb35fe08bbb3542f227514332ef">More...</a><br /></td></tr>
universe@390 124 <tr class="separator:a33fa7bb35fe08bbb3542f227514332ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 125 <tr class="memitem:a12a0c6a2379ef080043e6286bb8bad69"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69">ucx_buffer_shift</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, off_t shift)</td></tr>
universe@390 126 <tr class="memdesc:a12a0c6a2379ef080043e6286bb8bad69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shifts the contents of the buffer by the given offset. <a href="#a12a0c6a2379ef080043e6286bb8bad69">More...</a><br /></td></tr>
universe@390 127 <tr class="separator:a12a0c6a2379ef080043e6286bb8bad69"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 128 <tr class="memitem:a4fa10b6471495547eb981248fd4f1bc2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a4fa10b6471495547eb981248fd4f1bc2">ucx_buffer_shift_right</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t shift)</td></tr>
universe@390 129 <tr class="memdesc:a4fa10b6471495547eb981248fd4f1bc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shifts the buffer to the right. <a href="#a4fa10b6471495547eb981248fd4f1bc2">More...</a><br /></td></tr>
universe@390 130 <tr class="separator:a4fa10b6471495547eb981248fd4f1bc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 131 <tr class="memitem:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a20431dd0ed6a6fe9f15333bd72afe4db">ucx_buffer_shift_left</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t shift)</td></tr>
universe@390 132 <tr class="memdesc:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shifts the buffer to the left. <a href="#a20431dd0ed6a6fe9f15333bd72afe4db">More...</a><br /></td></tr>
universe@390 133 <tr class="separator:a20431dd0ed6a6fe9f15333bd72afe4db"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 134 <tr class="memitem:a47d98482662073c74f35deb0957d15d1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a47d98482662073c74f35deb0957d15d1">ucx_buffer_seek</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, off_t offset, int whence)</td></tr>
universe@390 135 <tr class="memdesc:a47d98482662073c74f35deb0957d15d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Moves the position of the buffer. <a href="#a47d98482662073c74f35deb0957d15d1">More...</a><br /></td></tr>
universe@390 136 <tr class="separator:a47d98482662073c74f35deb0957d15d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 137 <tr class="memitem:abad7fd9ad5061224c780b8d1d4c55f09"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#abad7fd9ad5061224c780b8d1d4c55f09">ucx_buffer_eof</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr>
universe@390 138 <tr class="memdesc:abad7fd9ad5061224c780b8d1d4c55f09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests, if the buffer position has exceeded the buffer capacity. <a href="#abad7fd9ad5061224c780b8d1d4c55f09">More...</a><br /></td></tr>
universe@390 139 <tr class="separator:abad7fd9ad5061224c780b8d1d4c55f09"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 140 <tr class="memitem:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6">ucx_buffer_extend</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, size_t additional_bytes)</td></tr>
universe@390 141 <tr class="memdesc:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extends the capacity of the buffer. <a href="#afaf97d2cd7e9faad79a9d35fe33e30c6">More...</a><br /></td></tr>
universe@390 142 <tr class="separator:afaf97d2cd7e9faad79a9d35fe33e30c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 143 <tr class="memitem:af8aacc7401814392b58c1b7b81bffc05"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a> (const void *ptr, size_t size, size_t nitems, <a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr>
universe@390 144 <tr class="memdesc:af8aacc7401814392b58c1b7b81bffc05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes data to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#af8aacc7401814392b58c1b7b81bffc05">More...</a><br /></td></tr>
universe@390 145 <tr class="separator:af8aacc7401814392b58c1b7b81bffc05"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 146 <tr class="memitem:ae5c3430759f0059547b35d5a254d4da5"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#ae5c3430759f0059547b35d5a254d4da5">ucx_buffer_read</a> (void *ptr, size_t size, size_t nitems, <a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr>
universe@390 147 <tr class="memdesc:ae5c3430759f0059547b35d5a254d4da5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads data from a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#ae5c3430759f0059547b35d5a254d4da5">More...</a><br /></td></tr>
universe@390 148 <tr class="separator:ae5c3430759f0059547b35d5a254d4da5"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 149 <tr class="memitem:a7d6f01b9d631b0123475dfb98fb849ac"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a7d6f01b9d631b0123475dfb98fb849ac">ucx_buffer_putc</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, int c)</td></tr>
universe@390 150 <tr class="memdesc:a7d6f01b9d631b0123475dfb98fb849ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a character to a buffer. <a href="#a7d6f01b9d631b0123475dfb98fb849ac">More...</a><br /></td></tr>
universe@390 151 <tr class="separator:a7d6f01b9d631b0123475dfb98fb849ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 152 <tr class="memitem:a396339022159ce4ca6d069de9f9209b0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#a396339022159ce4ca6d069de9f9209b0">ucx_buffer_getc</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer)</td></tr>
universe@390 153 <tr class="memdesc:a396339022159ce4ca6d069de9f9209b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a character from a buffer. <a href="#a396339022159ce4ca6d069de9f9209b0">More...</a><br /></td></tr>
universe@390 154 <tr class="separator:a396339022159ce4ca6d069de9f9209b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 155 <tr class="memitem:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="buffer_8h.html#af1d4b478e04b3ae0bf30e7c2ea964ea2">ucx_buffer_puts</a> (<a class="el" href="structUcxBuffer.html">UcxBuffer</a> *buffer, const char *str)</td></tr>
universe@390 156 <tr class="memdesc:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a string to a buffer. <a href="#af1d4b478e04b3ae0bf30e7c2ea964ea2">More...</a><br /></td></tr>
universe@390 157 <tr class="separator:af1d4b478e04b3ae0bf30e7c2ea964ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 158 </table>
universe@390 159 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
universe@390 160 <div class="textblock"><p>Advanced buffer implementation. </p>
universe@390 161 <p>Instances of <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> can be used to read from or to write to like one would do with a stream. This allows the use of <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392" title="Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. ">ucx_stream_copy()</a> to copy contents from one buffer to another.</p>
universe@390 162 <p>Some features for convenient use of the buffer can be enabled. See the documentation of the macro constants for more information.</p>
universe@390 163 <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd>
universe@390 164 <dd>
universe@390 165 Olaf Wintermann </dd></dl>
universe@390 166 </div><h2 class="groupheader">Macro Definition Documentation</h2>
universe@390 167 <a id="a374abd5aabfcc3ee0777a79d5fe651ab"></a>
universe@390 168 <h2 class="memtitle"><span class="permalink"><a href="#a374abd5aabfcc3ee0777a79d5fe651ab">&#9670;&nbsp;</a></span>ucx_buffer_clear</h2>
universe@390 169
universe@390 170 <div class="memitem">
universe@390 171 <div class="memproto">
universe@390 172 <table class="memname">
universe@390 173 <tr>
universe@390 174 <td class="memname">#define ucx_buffer_clear</td>
universe@390 175 <td>(</td>
universe@390 176 <td class="paramtype">&#160;</td>
universe@390 177 <td class="paramname">buffer</td><td>)</td>
universe@390 178 <td></td>
universe@390 179 </tr>
universe@390 180 </table>
universe@390 181 </div><div class="memdoc">
universe@390 182 <b>Value:</b><div class="fragment"><div class="line">memset((buffer)-&gt;space, 0, (buffer)-&gt;size); \</div><div class="line"> (buffer)-&gt;size = 0; (buffer)-&gt;pos = 0;</div></div><!-- fragment -->
universe@390 183 <p>Clears the buffer by resetting the position and deleting the data. </p>
universe@390 184 <p>The data is deleted by a zeroing it with call to <code>memset()</code>.</p>
universe@390 185 <dl class="params"><dt>Parameters</dt><dd>
universe@390 186 <table class="params">
universe@390 187 <tr><td class="paramname">buffer</td><td>the buffer to be cleared </td></tr>
universe@390 188 </table>
universe@390 189 </dd>
universe@390 190 </dl>
universe@390 191
universe@390 192 </div>
universe@390 193 </div>
universe@390 194 <a id="a828353846428c2c2f695f9938f059e52"></a>
universe@390 195 <h2 class="memtitle"><span class="permalink"><a href="#a828353846428c2c2f695f9938f059e52">&#9670;&nbsp;</a></span>ucx_buffer_clone</h2>
universe@390 196
universe@390 197 <div class="memitem">
universe@390 198 <div class="memproto">
universe@390 199 <table class="memname">
universe@390 200 <tr>
universe@390 201 <td class="memname">#define ucx_buffer_clone</td>
universe@390 202 <td>(</td>
universe@390 203 <td class="paramtype">&#160;</td>
universe@390 204 <td class="paramname">src, </td>
universe@390 205 </tr>
universe@390 206 <tr>
universe@390 207 <td class="paramkey"></td>
universe@390 208 <td></td>
universe@390 209 <td class="paramtype">&#160;</td>
universe@390 210 <td class="paramname">flags&#160;</td>
universe@390 211 </tr>
universe@390 212 <tr>
universe@390 213 <td></td>
universe@390 214 <td>)</td>
universe@390 215 <td></td><td>&#160;&#160;&#160;<a class="el" href="buffer_8h.html#a33fa7bb35fe08bbb3542f227514332ef">ucx_buffer_extract</a>(src, 0, (src)-&gt;capacity, flags)</td>
universe@390 216 </tr>
universe@390 217 </table>
universe@390 218 </div><div class="memdoc">
universe@390 219
universe@390 220 <p>A shorthand macro for the full extraction of the buffer. </p>
universe@390 221 <dl class="params"><dt>Parameters</dt><dd>
universe@390 222 <table class="params">
universe@390 223 <tr><td class="paramname">src</td><td>the source buffer </td></tr>
universe@390 224 <tr><td class="paramname">flags</td><td>feature mask for the new buffer </td></tr>
universe@390 225 </table>
universe@390 226 </dd>
universe@390 227 </dl>
universe@390 228 <dl class="section return"><dt>Returns</dt><dd>a new buffer with the extracted content </dd></dl>
universe@390 229
universe@390 230 </div>
universe@390 231 </div>
universe@390 232 <a id="a0f4b64f1b3a74c4f6c5d9409d6b6086a"></a>
universe@390 233 <h2 class="memtitle"><span class="permalink"><a href="#a0f4b64f1b3a74c4f6c5d9409d6b6086a">&#9670;&nbsp;</a></span>ucx_buffer_to_sstr</h2>
universe@390 234
universe@390 235 <div class="memitem">
universe@390 236 <div class="memproto">
universe@390 237 <table class="memname">
universe@390 238 <tr>
universe@390 239 <td class="memname">#define ucx_buffer_to_sstr</td>
universe@390 240 <td>(</td>
universe@390 241 <td class="paramtype">&#160;</td>
universe@390 242 <td class="paramname">buffer</td><td>)</td>
universe@390 243 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>((buffer)-&gt;space, (buffer)-&gt;size)</td>
universe@390 244 </tr>
universe@390 245 </table>
universe@390 246 </div><div class="memdoc">
universe@390 247
universe@390 248 <p>Returns the complete buffer content as <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a>. </p>
universe@390 249 <dl class="params"><dt>Parameters</dt><dd>
universe@390 250 <table class="params">
universe@390 251 <tr><td class="paramname">buffer</td><td>the buffer </td></tr>
universe@390 252 </table>
universe@390 253 </dd>
universe@390 254 </dl>
universe@390 255 <dl class="section return"><dt>Returns</dt><dd>the result of <code><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c" title="Creates a new sstr_t of the specified length based on a C string. ">sstrn()</a></code> with the buffer space and size as arguments </dd></dl>
universe@390 256
universe@390 257 </div>
universe@390 258 </div>
universe@390 259 <h2 class="groupheader">Function Documentation</h2>
universe@390 260 <a id="abad7fd9ad5061224c780b8d1d4c55f09"></a>
universe@390 261 <h2 class="memtitle"><span class="permalink"><a href="#abad7fd9ad5061224c780b8d1d4c55f09">&#9670;&nbsp;</a></span>ucx_buffer_eof()</h2>
universe@390 262
universe@390 263 <div class="memitem">
universe@390 264 <div class="memproto">
universe@390 265 <table class="memname">
universe@390 266 <tr>
universe@390 267 <td class="memname">int ucx_buffer_eof </td>
universe@390 268 <td>(</td>
universe@390 269 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 270 <td class="paramname"><em>buffer</em></td><td>)</td>
universe@390 271 <td></td>
universe@390 272 </tr>
universe@390 273 </table>
universe@390 274 </div><div class="memdoc">
universe@390 275
universe@390 276 <p>Tests, if the buffer position has exceeded the buffer capacity. </p>
universe@390 277 <dl class="params"><dt>Parameters</dt><dd>
universe@390 278 <table class="params">
universe@390 279 <tr><td class="paramname">buffer</td><td>the buffer to test </td></tr>
universe@390 280 </table>
universe@390 281 </dd>
universe@390 282 </dl>
universe@390 283 <dl class="section return"><dt>Returns</dt><dd>non-zero, if the current buffer position has exceeded the last available byte of the buffer. </dd></dl>
universe@390 284
universe@390 285 </div>
universe@390 286 </div>
universe@390 287 <a id="afaf97d2cd7e9faad79a9d35fe33e30c6"></a>
universe@390 288 <h2 class="memtitle"><span class="permalink"><a href="#afaf97d2cd7e9faad79a9d35fe33e30c6">&#9670;&nbsp;</a></span>ucx_buffer_extend()</h2>
universe@390 289
universe@390 290 <div class="memitem">
universe@390 291 <div class="memproto">
universe@390 292 <table class="memname">
universe@390 293 <tr>
universe@390 294 <td class="memname">int ucx_buffer_extend </td>
universe@390 295 <td>(</td>
universe@390 296 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 297 <td class="paramname"><em>buffer</em>, </td>
universe@390 298 </tr>
universe@390 299 <tr>
universe@390 300 <td class="paramkey"></td>
universe@390 301 <td></td>
universe@390 302 <td class="paramtype">size_t&#160;</td>
universe@390 303 <td class="paramname"><em>additional_bytes</em>&#160;</td>
universe@390 304 </tr>
universe@390 305 <tr>
universe@390 306 <td></td>
universe@390 307 <td>)</td>
universe@390 308 <td></td><td></td>
universe@390 309 </tr>
universe@390 310 </table>
universe@390 311 </div><div class="memdoc">
universe@390 312
universe@390 313 <p>Extends the capacity of the buffer. </p>
universe@390 314 <p><b>Note:</b> The buffer capacity increased by a power of two. I.e. the buffer capacity is doubled, as long as it would not hold the current content plus the additional required bytes.</p>
universe@390 315 <p><b>Attention:</b> the argument provided is the number of <em>additional</em> bytes the buffer shall hold. It is <b>NOT</b> the total number of bytes the buffer shall hold.</p>
universe@390 316 <dl class="params"><dt>Parameters</dt><dd>
universe@390 317 <table class="params">
universe@390 318 <tr><td class="paramname">buffer</td><td>the buffer to extend </td></tr>
universe@390 319 <tr><td class="paramname">additional_bytes</td><td>the number of additional bytes the buffer shall <em>at least</em> hold </td></tr>
universe@390 320 </table>
universe@390 321 </dd>
universe@390 322 </dl>
universe@390 323 <dl class="section return"><dt>Returns</dt><dd>0 on success or a non-zero value on failure </dd></dl>
universe@390 324
universe@390 325 </div>
universe@390 326 </div>
universe@390 327 <a id="a33fa7bb35fe08bbb3542f227514332ef"></a>
universe@390 328 <h2 class="memtitle"><span class="permalink"><a href="#a33fa7bb35fe08bbb3542f227514332ef">&#9670;&nbsp;</a></span>ucx_buffer_extract()</h2>
universe@390 329
universe@390 330 <div class="memitem">
universe@390 331 <div class="memproto">
universe@390 332 <table class="memname">
universe@390 333 <tr>
universe@390 334 <td class="memname"><a class="el" href="structUcxBuffer.html">UcxBuffer</a>* ucx_buffer_extract </td>
universe@390 335 <td>(</td>
universe@390 336 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 337 <td class="paramname"><em>src</em>, </td>
universe@390 338 </tr>
universe@390 339 <tr>
universe@390 340 <td class="paramkey"></td>
universe@390 341 <td></td>
universe@390 342 <td class="paramtype">size_t&#160;</td>
universe@390 343 <td class="paramname"><em>start</em>, </td>
universe@390 344 </tr>
universe@390 345 <tr>
universe@390 346 <td class="paramkey"></td>
universe@390 347 <td></td>
universe@390 348 <td class="paramtype">size_t&#160;</td>
universe@390 349 <td class="paramname"><em>length</em>, </td>
universe@390 350 </tr>
universe@390 351 <tr>
universe@390 352 <td class="paramkey"></td>
universe@390 353 <td></td>
universe@390 354 <td class="paramtype">int&#160;</td>
universe@390 355 <td class="paramname"><em>flags</em>&#160;</td>
universe@390 356 </tr>
universe@390 357 <tr>
universe@390 358 <td></td>
universe@390 359 <td>)</td>
universe@390 360 <td></td><td></td>
universe@390 361 </tr>
universe@390 362 </table>
universe@390 363 </div><div class="memdoc">
universe@390 364
universe@390 365 <p>Creates a new buffer and fills it with extracted content from another buffer. </p>
universe@390 366 <p><b>Note:</b> the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> feature is enforced for the new buffer.</p>
universe@390 367 <dl class="params"><dt>Parameters</dt><dd>
universe@390 368 <table class="params">
universe@390 369 <tr><td class="paramname">src</td><td>the source buffer </td></tr>
universe@390 370 <tr><td class="paramname">start</td><td>the start position of extraction </td></tr>
universe@390 371 <tr><td class="paramname">length</td><td>the count of bytes to extract (must not be zero) </td></tr>
universe@390 372 <tr><td class="paramname">flags</td><td>feature mask for the new buffer </td></tr>
universe@390 373 </table>
universe@390 374 </dd>
universe@390 375 </dl>
universe@390 376 <dl class="section return"><dt>Returns</dt><dd>a new buffer containing the extraction </dd></dl>
universe@390 377
universe@390 378 </div>
universe@390 379 </div>
universe@390 380 <a id="a2af8646d8905c22c7322e7540b0440af"></a>
universe@390 381 <h2 class="memtitle"><span class="permalink"><a href="#a2af8646d8905c22c7322e7540b0440af">&#9670;&nbsp;</a></span>ucx_buffer_free()</h2>
universe@390 382
universe@390 383 <div class="memitem">
universe@390 384 <div class="memproto">
universe@390 385 <table class="memname">
universe@390 386 <tr>
universe@390 387 <td class="memname">void ucx_buffer_free </td>
universe@390 388 <td>(</td>
universe@390 389 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 390 <td class="paramname"><em>buffer</em></td><td>)</td>
universe@390 391 <td></td>
universe@390 392 </tr>
universe@390 393 </table>
universe@390 394 </div><div class="memdoc">
universe@390 395
universe@390 396 <p>Destroys a buffer. </p>
universe@390 397 <p>If the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> feature is enabled, the contents of the buffer are also freed.</p>
universe@390 398 <dl class="params"><dt>Parameters</dt><dd>
universe@390 399 <table class="params">
universe@390 400 <tr><td class="paramname">buffer</td><td>the buffer to destroy </td></tr>
universe@390 401 </table>
universe@390 402 </dd>
universe@390 403 </dl>
universe@390 404
universe@390 405 </div>
universe@390 406 </div>
universe@390 407 <a id="a396339022159ce4ca6d069de9f9209b0"></a>
universe@390 408 <h2 class="memtitle"><span class="permalink"><a href="#a396339022159ce4ca6d069de9f9209b0">&#9670;&nbsp;</a></span>ucx_buffer_getc()</h2>
universe@390 409
universe@390 410 <div class="memitem">
universe@390 411 <div class="memproto">
universe@390 412 <table class="memname">
universe@390 413 <tr>
universe@390 414 <td class="memname">int ucx_buffer_getc </td>
universe@390 415 <td>(</td>
universe@390 416 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 417 <td class="paramname"><em>buffer</em></td><td>)</td>
universe@390 418 <td></td>
universe@390 419 </tr>
universe@390 420 </table>
universe@390 421 </div><div class="memdoc">
universe@390 422
universe@390 423 <p>Gets a character from a buffer. </p>
universe@390 424 <p>The current position of the buffer is increased after a successful read.</p>
universe@390 425 <dl class="params"><dt>Parameters</dt><dd>
universe@390 426 <table class="params">
universe@390 427 <tr><td class="paramname">buffer</td><td>the buffer to read from </td></tr>
universe@390 428 </table>
universe@390 429 </dd>
universe@390 430 </dl>
universe@390 431 <dl class="section return"><dt>Returns</dt><dd>the character as <code>int</code> value or <code>EOF</code>, if the end of the buffer is reached </dd></dl>
universe@390 432
universe@390 433 </div>
universe@390 434 </div>
universe@390 435 <a id="aacea876d692193ec6f859ce98da7351c"></a>
universe@390 436 <h2 class="memtitle"><span class="permalink"><a href="#aacea876d692193ec6f859ce98da7351c">&#9670;&nbsp;</a></span>ucx_buffer_new()</h2>
universe@390 437
universe@390 438 <div class="memitem">
universe@390 439 <div class="memproto">
universe@390 440 <table class="memname">
universe@390 441 <tr>
universe@390 442 <td class="memname"><a class="el" href="structUcxBuffer.html">UcxBuffer</a>* ucx_buffer_new </td>
universe@390 443 <td>(</td>
universe@390 444 <td class="paramtype">void *&#160;</td>
universe@390 445 <td class="paramname"><em>space</em>, </td>
universe@390 446 </tr>
universe@390 447 <tr>
universe@390 448 <td class="paramkey"></td>
universe@390 449 <td></td>
universe@390 450 <td class="paramtype">size_t&#160;</td>
universe@390 451 <td class="paramname"><em>capacity</em>, </td>
universe@390 452 </tr>
universe@390 453 <tr>
universe@390 454 <td class="paramkey"></td>
universe@390 455 <td></td>
universe@390 456 <td class="paramtype">int&#160;</td>
universe@390 457 <td class="paramname"><em>flags</em>&#160;</td>
universe@390 458 </tr>
universe@390 459 <tr>
universe@390 460 <td></td>
universe@390 461 <td>)</td>
universe@390 462 <td></td><td></td>
universe@390 463 </tr>
universe@390 464 </table>
universe@390 465 </div><div class="memdoc">
universe@390 466
universe@390 467 <p>Creates a new buffer. </p>
universe@390 468 <p><b>Note:</b> you may provide <code>NULL</code> as argument for <code>space</code>. Then this function will allocate the space and enforce the <a class="el" href="buffer_8h.html#a8bab11ad8a76719228b9ee91e2e45535" title="If this flag is enabled, the buffer will automatically free its contents. ">UCX_BUFFER_AUTOFREE</a> flag.</p>
universe@390 469 <dl class="params"><dt>Parameters</dt><dd>
universe@390 470 <table class="params">
universe@390 471 <tr><td class="paramname">space</td><td>pointer to the memory area, or <code>NULL</code> to allocate new memory </td></tr>
universe@390 472 <tr><td class="paramname">capacity</td><td>the capacity of the buffer </td></tr>
universe@390 473 <tr><td class="paramname">flags</td><td>buffer features (see <a class="el" href="structUcxBuffer.html#ac642e07b0a03be5aac48eb4aa5bec2f7" title="Flag register for buffer features. ">UcxBuffer.flags</a>) </td></tr>
universe@390 474 </table>
universe@390 475 </dd>
universe@390 476 </dl>
universe@390 477 <dl class="section return"><dt>Returns</dt><dd>the new buffer </dd></dl>
universe@390 478
universe@390 479 </div>
universe@390 480 </div>
universe@390 481 <a id="a7d6f01b9d631b0123475dfb98fb849ac"></a>
universe@390 482 <h2 class="memtitle"><span class="permalink"><a href="#a7d6f01b9d631b0123475dfb98fb849ac">&#9670;&nbsp;</a></span>ucx_buffer_putc()</h2>
universe@390 483
universe@390 484 <div class="memitem">
universe@390 485 <div class="memproto">
universe@390 486 <table class="memname">
universe@390 487 <tr>
universe@390 488 <td class="memname">int ucx_buffer_putc </td>
universe@390 489 <td>(</td>
universe@390 490 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 491 <td class="paramname"><em>buffer</em>, </td>
universe@390 492 </tr>
universe@390 493 <tr>
universe@390 494 <td class="paramkey"></td>
universe@390 495 <td></td>
universe@390 496 <td class="paramtype">int&#160;</td>
universe@390 497 <td class="paramname"><em>c</em>&#160;</td>
universe@390 498 </tr>
universe@390 499 <tr>
universe@390 500 <td></td>
universe@390 501 <td>)</td>
universe@390 502 <td></td><td></td>
universe@390 503 </tr>
universe@390 504 </table>
universe@390 505 </div><div class="memdoc">
universe@390 506
universe@390 507 <p>Writes a character to a buffer. </p>
universe@390 508 <p>The least significant byte of the argument is written to the buffer. If the end of the buffer is reached and <a class="el" href="buffer_8h.html#a05f9565f2d04399168c3b1c152a632be" title="If this flag is enabled, the buffer will automatically extends its capacity. ">UCX_BUFFER_AUTOEXTEND</a> feature is enabled, the buffer capacity is extended by <a class="el" href="buffer_8h.html#afaf97d2cd7e9faad79a9d35fe33e30c6" title="Extends the capacity of the buffer. ">ucx_buffer_extend()</a>. If the feature is disabled or buffer extension fails, <code>EOF</code> is returned.</p>
universe@390 509 <p>On successful write the position of the buffer is increased.</p>
universe@390 510 <dl class="params"><dt>Parameters</dt><dd>
universe@390 511 <table class="params">
universe@390 512 <tr><td class="paramname">buffer</td><td>the buffer to write to </td></tr>
universe@390 513 <tr><td class="paramname">c</td><td>the character to write as <code>int</code> value </td></tr>
universe@390 514 </table>
universe@390 515 </dd>
universe@390 516 </dl>
universe@390 517 <dl class="section return"><dt>Returns</dt><dd>the byte that has bean written as <code>int</code> value or <code>EOF</code> when the end of the stream is reached and automatic extension is not enabled or not possible </dd></dl>
universe@390 518
universe@390 519 </div>
universe@390 520 </div>
universe@390 521 <a id="af1d4b478e04b3ae0bf30e7c2ea964ea2"></a>
universe@390 522 <h2 class="memtitle"><span class="permalink"><a href="#af1d4b478e04b3ae0bf30e7c2ea964ea2">&#9670;&nbsp;</a></span>ucx_buffer_puts()</h2>
universe@390 523
universe@390 524 <div class="memitem">
universe@390 525 <div class="memproto">
universe@390 526 <table class="memname">
universe@390 527 <tr>
universe@390 528 <td class="memname">size_t ucx_buffer_puts </td>
universe@390 529 <td>(</td>
universe@390 530 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 531 <td class="paramname"><em>buffer</em>, </td>
universe@390 532 </tr>
universe@390 533 <tr>
universe@390 534 <td class="paramkey"></td>
universe@390 535 <td></td>
universe@390 536 <td class="paramtype">const char *&#160;</td>
universe@390 537 <td class="paramname"><em>str</em>&#160;</td>
universe@390 538 </tr>
universe@390 539 <tr>
universe@390 540 <td></td>
universe@390 541 <td>)</td>
universe@390 542 <td></td><td></td>
universe@390 543 </tr>
universe@390 544 </table>
universe@390 545 </div><div class="memdoc">
universe@390 546
universe@390 547 <p>Writes a string to a buffer. </p>
universe@390 548 <dl class="params"><dt>Parameters</dt><dd>
universe@390 549 <table class="params">
universe@390 550 <tr><td class="paramname">buffer</td><td>the buffer </td></tr>
universe@390 551 <tr><td class="paramname">str</td><td>the string </td></tr>
universe@390 552 </table>
universe@390 553 </dd>
universe@390 554 </dl>
universe@390 555 <dl class="section return"><dt>Returns</dt><dd>the number of bytes written </dd></dl>
universe@390 556
universe@390 557 </div>
universe@390 558 </div>
universe@390 559 <a id="ae5c3430759f0059547b35d5a254d4da5"></a>
universe@390 560 <h2 class="memtitle"><span class="permalink"><a href="#ae5c3430759f0059547b35d5a254d4da5">&#9670;&nbsp;</a></span>ucx_buffer_read()</h2>
universe@390 561
universe@390 562 <div class="memitem">
universe@390 563 <div class="memproto">
universe@390 564 <table class="memname">
universe@390 565 <tr>
universe@390 566 <td class="memname">size_t ucx_buffer_read </td>
universe@390 567 <td>(</td>
universe@390 568 <td class="paramtype">void *&#160;</td>
universe@390 569 <td class="paramname"><em>ptr</em>, </td>
universe@390 570 </tr>
universe@390 571 <tr>
universe@390 572 <td class="paramkey"></td>
universe@390 573 <td></td>
universe@390 574 <td class="paramtype">size_t&#160;</td>
universe@390 575 <td class="paramname"><em>size</em>, </td>
universe@390 576 </tr>
universe@390 577 <tr>
universe@390 578 <td class="paramkey"></td>
universe@390 579 <td></td>
universe@390 580 <td class="paramtype">size_t&#160;</td>
universe@390 581 <td class="paramname"><em>nitems</em>, </td>
universe@390 582 </tr>
universe@390 583 <tr>
universe@390 584 <td class="paramkey"></td>
universe@390 585 <td></td>
universe@390 586 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 587 <td class="paramname"><em>buffer</em>&#160;</td>
universe@390 588 </tr>
universe@390 589 <tr>
universe@390 590 <td></td>
universe@390 591 <td>)</td>
universe@390 592 <td></td><td></td>
universe@390 593 </tr>
universe@390 594 </table>
universe@390 595 </div><div class="memdoc">
universe@390 596
universe@390 597 <p>Reads data from a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p>
universe@390 598 <p>The position of the buffer is increased by the number of bytes read.</p>
universe@390 599 <dl class="params"><dt>Parameters</dt><dd>
universe@390 600 <table class="params">
universe@390 601 <tr><td class="paramname">ptr</td><td>a pointer to the memory area where to store the read data </td></tr>
universe@390 602 <tr><td class="paramname">size</td><td>the length of one element </td></tr>
universe@390 603 <tr><td class="paramname">nitems</td><td>the element count </td></tr>
universe@390 604 <tr><td class="paramname">buffer</td><td>the <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> to read from </td></tr>
universe@390 605 </table>
universe@390 606 </dd>
universe@390 607 </dl>
universe@390 608 <dl class="section return"><dt>Returns</dt><dd>the total number of elements read </dd></dl>
universe@390 609
universe@390 610 </div>
universe@390 611 </div>
universe@390 612 <a id="a47d98482662073c74f35deb0957d15d1"></a>
universe@390 613 <h2 class="memtitle"><span class="permalink"><a href="#a47d98482662073c74f35deb0957d15d1">&#9670;&nbsp;</a></span>ucx_buffer_seek()</h2>
universe@390 614
universe@390 615 <div class="memitem">
universe@390 616 <div class="memproto">
universe@390 617 <table class="memname">
universe@390 618 <tr>
universe@390 619 <td class="memname">int ucx_buffer_seek </td>
universe@390 620 <td>(</td>
universe@390 621 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 622 <td class="paramname"><em>buffer</em>, </td>
universe@390 623 </tr>
universe@390 624 <tr>
universe@390 625 <td class="paramkey"></td>
universe@390 626 <td></td>
universe@390 627 <td class="paramtype">off_t&#160;</td>
universe@390 628 <td class="paramname"><em>offset</em>, </td>
universe@390 629 </tr>
universe@390 630 <tr>
universe@390 631 <td class="paramkey"></td>
universe@390 632 <td></td>
universe@390 633 <td class="paramtype">int&#160;</td>
universe@390 634 <td class="paramname"><em>whence</em>&#160;</td>
universe@390 635 </tr>
universe@390 636 <tr>
universe@390 637 <td></td>
universe@390 638 <td>)</td>
universe@390 639 <td></td><td></td>
universe@390 640 </tr>
universe@390 641 </table>
universe@390 642 </div><div class="memdoc">
universe@390 643
universe@390 644 <p>Moves the position of the buffer. </p>
universe@390 645 <p>The new position is relative to the <code>whence</code> argument.</p>
universe@390 646 <p>SEEK_SET marks the start of the buffer. SEEK_CUR marks the current position. SEEK_END marks the end of the buffer.</p>
universe@390 647 <p>With an offset of zero, this function sets the buffer position to zero (SEEK_SET), the buffer size (SEEK_END) or leaves the buffer position unchanged (SEEK_CUR).</p>
universe@390 648 <dl class="params"><dt>Parameters</dt><dd>
universe@390 649 <table class="params">
universe@390 650 <tr><td class="paramname">buffer</td><td></td></tr>
universe@390 651 <tr><td class="paramname">offset</td><td>position offset relative to <code>whence</code> </td></tr>
universe@390 652 <tr><td class="paramname">whence</td><td>one of SEEK_SET, SEEK_CUR or SEEK_END </td></tr>
universe@390 653 </table>
universe@390 654 </dd>
universe@390 655 </dl>
universe@390 656 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if the position is invalid </dd></dl>
universe@390 657
universe@390 658 </div>
universe@390 659 </div>
universe@390 660 <a id="a12a0c6a2379ef080043e6286bb8bad69"></a>
universe@390 661 <h2 class="memtitle"><span class="permalink"><a href="#a12a0c6a2379ef080043e6286bb8bad69">&#9670;&nbsp;</a></span>ucx_buffer_shift()</h2>
universe@390 662
universe@390 663 <div class="memitem">
universe@390 664 <div class="memproto">
universe@390 665 <table class="memname">
universe@390 666 <tr>
universe@390 667 <td class="memname">int ucx_buffer_shift </td>
universe@390 668 <td>(</td>
universe@390 669 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 670 <td class="paramname"><em>buffer</em>, </td>
universe@390 671 </tr>
universe@390 672 <tr>
universe@390 673 <td class="paramkey"></td>
universe@390 674 <td></td>
universe@390 675 <td class="paramtype">off_t&#160;</td>
universe@390 676 <td class="paramname"><em>shift</em>&#160;</td>
universe@390 677 </tr>
universe@390 678 <tr>
universe@390 679 <td></td>
universe@390 680 <td>)</td>
universe@390 681 <td></td><td></td>
universe@390 682 </tr>
universe@390 683 </table>
universe@390 684 </div><div class="memdoc">
universe@390 685
universe@390 686 <p>Shifts the contents of the buffer by the given offset. </p>
universe@390 687 <p>If the offset is positive, the contents are shifted to the right. If auto extension is enabled, the buffer grows, if necessary. In case the auto extension fails, this function returns a non-zero value and no contents are changed. If auto extension is disabled, the contents that do not fit into the buffer are discarded.</p>
universe@390 688 <p>If the offset is negative, the contents are shifted to the left where the first <code>shift</code> bytes are discarded. The new size of the buffer is the old size minus the absolute shift value. If this value is larger than the buffer size, the buffer is emptied (but not cleared, see the security note below).</p>
universe@390 689 <p>The buffer position gets shifted alongside with the content but is kept within the boundaries of the buffer.</p>
universe@390 690 <p><b>Security note:</b> the shifting operation does <em>not</em> erase the previously occupied memory cells. You can easily do that manually, e.g. by calling <code>memset(buffer-&gt;space, 0, shift)</code> for a right shift or <code>memset(buffer-&gt;size, 0, buffer-&gt;capacity-buffer-&gt;size)</code> for a left shift.</p>
universe@390 691 <dl class="params"><dt>Parameters</dt><dd>
universe@390 692 <table class="params">
universe@390 693 <tr><td class="paramname">buffer</td><td>the buffer </td></tr>
universe@390 694 <tr><td class="paramname">shift</td><td>the shift offset (negative means left shift) </td></tr>
universe@390 695 </table>
universe@390 696 </dd>
universe@390 697 </dl>
universe@390 698 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if a required auto-extension fails </dd></dl>
universe@390 699
universe@390 700 </div>
universe@390 701 </div>
universe@390 702 <a id="a20431dd0ed6a6fe9f15333bd72afe4db"></a>
universe@390 703 <h2 class="memtitle"><span class="permalink"><a href="#a20431dd0ed6a6fe9f15333bd72afe4db">&#9670;&nbsp;</a></span>ucx_buffer_shift_left()</h2>
universe@390 704
universe@390 705 <div class="memitem">
universe@390 706 <div class="memproto">
universe@390 707 <table class="memname">
universe@390 708 <tr>
universe@390 709 <td class="memname">int ucx_buffer_shift_left </td>
universe@390 710 <td>(</td>
universe@390 711 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 712 <td class="paramname"><em>buffer</em>, </td>
universe@390 713 </tr>
universe@390 714 <tr>
universe@390 715 <td class="paramkey"></td>
universe@390 716 <td></td>
universe@390 717 <td class="paramtype">size_t&#160;</td>
universe@390 718 <td class="paramname"><em>shift</em>&#160;</td>
universe@390 719 </tr>
universe@390 720 <tr>
universe@390 721 <td></td>
universe@390 722 <td>)</td>
universe@390 723 <td></td><td></td>
universe@390 724 </tr>
universe@390 725 </table>
universe@390 726 </div><div class="memdoc">
universe@390 727
universe@390 728 <p>Shifts the buffer to the left. </p>
universe@390 729 <p>See <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> for details. Note, however, that this method expects a positive shift offset.</p>
universe@390 730 <p>Since a left shift cannot fail due to memory allocation problems, this function always returns zero.</p>
universe@390 731 <dl class="params"><dt>Parameters</dt><dd>
universe@390 732 <table class="params">
universe@390 733 <tr><td class="paramname">buffer</td><td>the buffer </td></tr>
universe@390 734 <tr><td class="paramname">shift</td><td>the shift offset </td></tr>
universe@390 735 </table>
universe@390 736 </dd>
universe@390 737 </dl>
universe@390 738 <dl class="section return"><dt>Returns</dt><dd>always zero </dd></dl>
universe@390 739 <dl class="section see"><dt>See also</dt><dd><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> </dd></dl>
universe@390 740
universe@390 741 </div>
universe@390 742 </div>
universe@390 743 <a id="a4fa10b6471495547eb981248fd4f1bc2"></a>
universe@390 744 <h2 class="memtitle"><span class="permalink"><a href="#a4fa10b6471495547eb981248fd4f1bc2">&#9670;&nbsp;</a></span>ucx_buffer_shift_right()</h2>
universe@390 745
universe@390 746 <div class="memitem">
universe@390 747 <div class="memproto">
universe@390 748 <table class="memname">
universe@390 749 <tr>
universe@390 750 <td class="memname">int ucx_buffer_shift_right </td>
universe@390 751 <td>(</td>
universe@390 752 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 753 <td class="paramname"><em>buffer</em>, </td>
universe@390 754 </tr>
universe@390 755 <tr>
universe@390 756 <td class="paramkey"></td>
universe@390 757 <td></td>
universe@390 758 <td class="paramtype">size_t&#160;</td>
universe@390 759 <td class="paramname"><em>shift</em>&#160;</td>
universe@390 760 </tr>
universe@390 761 <tr>
universe@390 762 <td></td>
universe@390 763 <td>)</td>
universe@390 764 <td></td><td></td>
universe@390 765 </tr>
universe@390 766 </table>
universe@390 767 </div><div class="memdoc">
universe@390 768
universe@390 769 <p>Shifts the buffer to the right. </p>
universe@390 770 <p>See <a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> for details.</p>
universe@390 771 <dl class="params"><dt>Parameters</dt><dd>
universe@390 772 <table class="params">
universe@390 773 <tr><td class="paramname">buffer</td><td>the buffer </td></tr>
universe@390 774 <tr><td class="paramname">shift</td><td>the shift offset </td></tr>
universe@390 775 </table>
universe@390 776 </dd>
universe@390 777 </dl>
universe@390 778 <dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero if a required auto-extension fails </dd></dl>
universe@390 779 <dl class="section see"><dt>See also</dt><dd><a class="el" href="buffer_8h.html#a12a0c6a2379ef080043e6286bb8bad69" title="Shifts the contents of the buffer by the given offset. ">ucx_buffer_shift()</a> </dd></dl>
universe@390 780
universe@390 781 </div>
universe@390 782 </div>
universe@390 783 <a id="af8aacc7401814392b58c1b7b81bffc05"></a>
universe@390 784 <h2 class="memtitle"><span class="permalink"><a href="#af8aacc7401814392b58c1b7b81bffc05">&#9670;&nbsp;</a></span>ucx_buffer_write()</h2>
universe@390 785
universe@390 786 <div class="memitem">
universe@390 787 <div class="memproto">
universe@390 788 <table class="memname">
universe@390 789 <tr>
universe@390 790 <td class="memname">size_t ucx_buffer_write </td>
universe@390 791 <td>(</td>
universe@390 792 <td class="paramtype">const void *&#160;</td>
universe@390 793 <td class="paramname"><em>ptr</em>, </td>
universe@390 794 </tr>
universe@390 795 <tr>
universe@390 796 <td class="paramkey"></td>
universe@390 797 <td></td>
universe@390 798 <td class="paramtype">size_t&#160;</td>
universe@390 799 <td class="paramname"><em>size</em>, </td>
universe@390 800 </tr>
universe@390 801 <tr>
universe@390 802 <td class="paramkey"></td>
universe@390 803 <td></td>
universe@390 804 <td class="paramtype">size_t&#160;</td>
universe@390 805 <td class="paramname"><em>nitems</em>, </td>
universe@390 806 </tr>
universe@390 807 <tr>
universe@390 808 <td class="paramkey"></td>
universe@390 809 <td></td>
universe@390 810 <td class="paramtype"><a class="el" href="structUcxBuffer.html">UcxBuffer</a> *&#160;</td>
universe@390 811 <td class="paramname"><em>buffer</em>&#160;</td>
universe@390 812 </tr>
universe@390 813 <tr>
universe@390 814 <td></td>
universe@390 815 <td>)</td>
universe@390 816 <td></td><td></td>
universe@390 817 </tr>
universe@390 818 </table>
universe@390 819 </div><div class="memdoc">
universe@390 820
universe@390 821 <p>Writes data to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p>
universe@390 822 <p>The position of the buffer is increased by the number of bytes written.</p>
universe@390 823 <dl class="params"><dt>Parameters</dt><dd>
universe@390 824 <table class="params">
universe@390 825 <tr><td class="paramname">ptr</td><td>a pointer to the memory area containing the bytes to be written </td></tr>
universe@390 826 <tr><td class="paramname">size</td><td>the length of one element </td></tr>
universe@390 827 <tr><td class="paramname">nitems</td><td>the element count </td></tr>
universe@390 828 <tr><td class="paramname">buffer</td><td>the <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a> to write to </td></tr>
universe@390 829 </table>
universe@390 830 </dd>
universe@390 831 </dl>
universe@390 832 <dl class="section return"><dt>Returns</dt><dd>the total count of bytes written </dd></dl>
universe@390 833
universe@390 834 </div>
universe@390 835 </div>
universe@390 836 </div><!-- contents -->
universe@390 837 <!-- start footer part -->
universe@390 838 <hr class="footer"/><address class="footer"><small>
universe@390 839 Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
universe@390 840 <img class="footer" src="doxygen.png" alt="doxygen"/>
universe@390 841 </a> 1.8.13
universe@390 842 </small></address>
universe@390 843 </body>
universe@390 844 </html>

mercurial