blob: 64a1fe354bd558a45ff5862ab10b38730725dfcf [file]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Avro C++: api/Stream.hh Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Avro C++
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_0188a3e6da905bc60aceb35bf790b8c9.html">api</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Stream.hh</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * or more contributor license agreements. See the NOTICE file</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * with the License. You may obtain a copy of the License at</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * https://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * limitations under the License.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef avro_Stream_hh__</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define avro_Stream_hh__</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;boost/utility.hpp&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &quot;Config.hh&quot;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;Exception.hh&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceavro.html">avro</a> {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classavro_1_1InputStream.html"> 36</a></span>&#160;<span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1InputStream.html">InputStream</a> : boost::noncopyable {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="classavro_1_1InputStream.html">InputStream</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1InputStream.html">InputStream</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> next(<span class="keyword">const</span> uint8_t **data, <span class="keywordtype">size_t</span> *len) = 0;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> backup(<span class="keywordtype">size_t</span> len) = 0;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> skip(<span class="keywordtype">size_t</span> len) = 0;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> byteCount() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">typedef</span> std::unique_ptr&lt;InputStream&gt; InputStreamPtr;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classavro_1_1SeekableInputStream.html"> 82</a></span>&#160;<span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1SeekableInputStream.html">SeekableInputStream</a> : <span class="keyword">public</span> <a class="code" href="classavro_1_1InputStream.html">InputStream</a> {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classavro_1_1SeekableInputStream.html">SeekableInputStream</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; ~<a class="code" href="classavro_1_1SeekableInputStream.html">SeekableInputStream</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> seek(int64_t position) = 0;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">typedef</span> std::unique_ptr&lt;SeekableInputStream&gt; SeekableInputStreamPtr;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classavro_1_1OutputStream.html"> 108</a></span>&#160;<span class="keyword">class </span>AVRO_DECL <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> : boost::noncopyable {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classavro_1_1OutputStream.html">OutputStream</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> next(uint8_t **data, <span class="keywordtype">size_t</span> *len) = 0;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> backup(<span class="keywordtype">size_t</span> len) = 0;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">virtual</span> uint64_t byteCount() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> flush() = 0;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;};</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">typedef</span> std::unique_ptr&lt;OutputStream&gt; OutputStreamPtr;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;AVRO_DECL OutputStreamPtr <a class="code" href="namespaceavro.html#a0e961740e43d3f800220f03de11654e8">memoryOutputStream</a>(<span class="keywordtype">size_t</span> chunkSize = 4 * 1024);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a98b7a8baaef11e477db89699ab27359b">memoryInputStream</a>(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a98b7a8baaef11e477db89699ab27359b">memoryInputStream</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &amp;source);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;AVRO_DECL std::shared_ptr&lt;std::vector&lt;uint8_t&gt;&gt; <a class="code" href="namespaceavro.html#a1d938bbd6332e4c247e5a975ca066647">snapshot</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &amp;source);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;AVRO_DECL OutputStreamPtr <a class="code" href="namespaceavro.html#a164e34d709ba33d2464c295e7874f784">fileOutputStream</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a1e5251d2ad9581e353399c1bac90c9fb">fileInputStream</a>(</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;AVRO_DECL SeekableInputStreamPtr fileSeekableInputStream(</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;AVRO_DECL OutputStreamPtr <a class="code" href="namespaceavro.html#acb2ea7a6b8a82014ce7d76abcc171812">ostreamOutputStream</a>(std::ostream &amp;os,</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#aff15582cf7ee211e1b2e0968a0edbd7e">istreamInputStream</a>(</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; std::istream &amp;in, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a9033beeae2950b3e73d99482d3936929">nonSeekableIstreamInputStream</a>(</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; std::istream &amp;is, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html"> 227</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structavro_1_1StreamReader.html">StreamReader</a> {</div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008"> 231</a></span>&#160; <a class="code" href="classavro_1_1InputStream.html">InputStream</a> *<a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94"> 236</a></span>&#160; <span class="keyword">const</span> uint8_t *<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710"> 241</a></span>&#160; <span class="keyword">const</span> uint8_t *<a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a1f69076d05b5711cf0695d1a91193737"> 246</a></span>&#160; <a class="code" href="structavro_1_1StreamReader.html#a1f69076d05b5711cf0695d1a91193737">StreamReader</a>() : <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>(nullptr), <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>(nullptr), <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>(nullptr) {}</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639"> 251</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639">StreamReader</a>(<a class="code" href="classavro_1_1InputStream.html">InputStream</a> &amp;in) : <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>(nullptr), <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>(nullptr), <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>(nullptr) { <a class="code" href="structavro_1_1StreamReader.html#a293c20163efcc2d0380fab80f3c82058">reset</a>(in); }</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a293c20163efcc2d0380fab80f3c82058"> 257</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#a293c20163efcc2d0380fab80f3c82058">reset</a>(<a class="code" href="classavro_1_1InputStream.html">InputStream</a> &amp;is) {</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a> != <span class="keyword">nullptr</span> &amp;&amp; <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> != <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>) {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>-&gt;<a class="code" href="classavro_1_1InputStream.html#a03f9cfac5f7a0141bfe7d6cc4bc7a0d0">backup</a>(<a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> - <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a> = &amp;is;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> = <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; </div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ace1b429f51df3702a33d2991031ac2f8"> 269</a></span>&#160; uint8_t <a class="code" href="structavro_1_1StreamReader.html#ace1b429f51df3702a33d2991031ac2f8">read</a>() {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> == <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>) {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a">more</a>();</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>++;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; </div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ae2f45670ed6815c76103245665f0ee25"> 280</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#ae2f45670ed6815c76103245665f0ee25">readBytes</a>(uint8_t *b, <span class="keywordtype">size_t</span> n) {</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">while</span> (n &gt; 0) {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> == <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>) {</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a">more</a>();</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">size_t</span> q = <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> - <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (q &gt; n) {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; q = n;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; ::memcpy(b, <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>, q);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> += q;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; b += q;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; n -= q;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a25be160ee9e5fd541c0004066376c4ac"> 300</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#a25be160ee9e5fd541c0004066376c4ac">skipBytes</a>(<span class="keywordtype">size_t</span> n) {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (n &gt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(<a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> - <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>)) {</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; n -= <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> - <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> = <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>-&gt;<a class="code" href="classavro_1_1InputStream.html#a4ec852f779fc68dea8fef197ec3eef1d">skip</a>(n);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> += n;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
<div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76"> 316</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76">fill</a>() {</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">size_t</span> n = 0;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>-&gt;<a class="code" href="classavro_1_1InputStream.html#a87767c15b0661981d24f7a42bfcef6b5">next</a>(&amp;<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>, &amp;n)) {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (n != 0) {</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> = <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> + n;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a"> 330</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a">more</a>() {</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76">fill</a>()) {</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">&quot;EOF reached&quot;</span>);</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ad87f4fb3d42428965766169da50a7487"> 339</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structavro_1_1StreamReader.html#ad87f4fb3d42428965766169da50a7487">hasMore</a>() {</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a> != <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> || <a class="code" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76">fill</a>();</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a8c31fc602f068368d7a0e91eea71c4de"> 347</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#a8c31fc602f068368d7a0e91eea71c4de">drain</a>(<span class="keywordtype">bool</span> unRead) {</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">if</span> (unRead) {</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; --<a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">in_</a>-&gt;<a class="code" href="classavro_1_1InputStream.html#a03f9cfac5f7a0141bfe7d6cc4bc7a0d0">backup</a>(<a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> - <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>);</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a> = <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;};</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html"> 359</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structavro_1_1StreamWriter.html">StreamWriter</a> {</div>
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7"> 363</a></span>&#160; <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> *<a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986"> 368</a></span>&#160; uint8_t *<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>;</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5"> 373</a></span>&#160; uint8_t *<a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a5e20cd787a15c2941c90b6d077c73d14"> 378</a></span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a5e20cd787a15c2941c90b6d077c73d14">StreamWriter</a>() : <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>(nullptr), <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>(nullptr), <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>(nullptr) {}</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350"> 383</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350">StreamWriter</a>(<a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &amp;out) : <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>(nullptr), <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>(nullptr), <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>(nullptr) { <a class="code" href="structavro_1_1StreamWriter.html#af3aaff674b77d7f98de86597da26b1f3">reset</a>(out); }</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#af3aaff674b77d7f98de86597da26b1f3"> 389</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#af3aaff674b77d7f98de86597da26b1f3">reset</a>(<a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &amp;os) {</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a> != <span class="keyword">nullptr</span> &amp;&amp; <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a> != <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>) {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>-&gt;<a class="code" href="classavro_1_1OutputStream.html#a81881efd901311b1fc6610f77791adfe">backup</a>(<a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a> - <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>);</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a> = &amp;os;</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> = <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; </div>
<div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8edff3e28052978180a42b2f792eb28d"> 400</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a8edff3e28052978180a42b2f792eb28d">write</a>(uint8_t c) {</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> == <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>) {</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880">more</a>();</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; *<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>++ = c;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
<div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a"> 410</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a">writeBytes</a>(<span class="keyword">const</span> uint8_t *b, <span class="keywordtype">size_t</span> n) {</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">while</span> (n &gt; 0) {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> == <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>) {</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880">more</a>();</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordtype">size_t</span> q = <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a> - <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (q &gt; n) {</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; q = n;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; ::memcpy(<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>, b, q);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> += q;</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; b += q;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; n -= q;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; </div>
<div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d"> 430</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d">flush</a>() {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> != <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>) {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>-&gt;<a class="code" href="classavro_1_1OutputStream.html#a81881efd901311b1fc6610f77791adfe">backup</a>(<a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a> - <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> = <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>-&gt;<a class="code" href="classavro_1_1OutputStream.html#a4eba4b0bca41a7174460e2672782273d">flush</a>();</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; </div>
<div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a2fbdd9e896bdfb7f704b52243b4f1661"> 442</a></span>&#160; int64_t <a class="code" href="structavro_1_1StreamWriter.html#a2fbdd9e896bdfb7f704b52243b4f1661">byteCount</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>-&gt;<a class="code" href="classavro_1_1OutputStream.html#ab799b7bad4c75b5ade65fa6fd117a4b4">byteCount</a>();</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
<div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880"> 449</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880">more</a>() {</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">size_t</span> n = 0;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">out_</a>-&gt;<a class="code" href="classavro_1_1OutputStream.html#a257177c7b0f2e98c523cb2ae68737e18">next</a>(&amp;<a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>, &amp;n)) {</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (n != 0) {</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a> = <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a> + n;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">&quot;EOF reached&quot;</span>);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;};</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; </div>
<div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="namespaceavro.html#adeab3d9f5f2a4a4f96d3ffb8ba27e523"> 465</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceavro.html#adeab3d9f5f2a4a4f96d3ffb8ba27e523">copy</a>(<a class="code" href="classavro_1_1InputStream.html">InputStream</a> &amp;in, <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a> &amp;out) {</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">const</span> uint8_t *p = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordtype">size_t</span> n = 0;</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="structavro_1_1StreamWriter.html">StreamWriter</a> w(out);</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">while</span> (in.<a class="code" href="classavro_1_1InputStream.html#a87767c15b0661981d24f7a42bfcef6b5">next</a>(&amp;p, &amp;n)) {</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; w.<a class="code" href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a">writeBytes</a>(p, n);</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; w.<a class="code" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d">flush</a>();</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;} <span class="comment">// namespace avro</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor">#endif</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructavro_1_1StreamReader_html_ad87f4fb3d42428965766169da50a7487"><div class="ttname"><a href="structavro_1_1StreamReader.html#ad87f4fb3d42428965766169da50a7487">avro::StreamReader::hasMore</a></div><div class="ttdeci">bool hasMore()</div><div class="ttdoc">Returns true if and only if the end of stream is not reached.</div><div class="ttdef"><b>Definition:</b> Stream.hh:339</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_af3aaff674b77d7f98de86597da26b1f3"><div class="ttname"><a href="structavro_1_1StreamWriter.html#af3aaff674b77d7f98de86597da26b1f3">avro::StreamWriter::reset</a></div><div class="ttdeci">void reset(OutputStream &amp;os)</div><div class="ttdoc">Replaces the current underlying stream with a new one.</div><div class="ttdef"><b>Definition:</b> Stream.hh:389</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a803e4adca5c39eeeb2fb179cdd26123a"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a">avro::StreamWriter::writeBytes</a></div><div class="ttdeci">void writeBytes(const uint8_t *b, size_t n)</div><div class="ttdoc">Writes the specified number of bytes starting at b.</div><div class="ttdef"><b>Definition:</b> Stream.hh:410</div></div>
<div class="ttc" id="aclassavro_1_1OutputStream_html"><div class="ttname"><a href="classavro_1_1OutputStream.html">avro::OutputStream</a></div><div class="ttdoc">A no-copy output stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:108</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_af255c4f8690be489a0b623328e1cee76"><div class="ttname"><a href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76">avro::StreamReader::fill</a></div><div class="ttdeci">bool fill()</div><div class="ttdoc">Get as many byes from the underlying stream as possible in a single chunk.</div><div class="ttdef"><b>Definition:</b> Stream.hh:316</div></div>
<div class="ttc" id="aclassavro_1_1SeekableInputStream_html"><div class="ttname"><a href="classavro_1_1SeekableInputStream.html">avro::SeekableInputStream</a></div><div class="ttdoc">An InputStream which also supports seeking to a specific offset.</div><div class="ttdef"><b>Definition:</b> Stream.hh:82</div></div>
<div class="ttc" id="aclassavro_1_1OutputStream_html_a4eba4b0bca41a7174460e2672782273d"><div class="ttname"><a href="classavro_1_1OutputStream.html#a4eba4b0bca41a7174460e2672782273d">avro::OutputStream::flush</a></div><div class="ttdeci">virtual void flush()=0</div><div class="ttdoc">Flushes any data remaining in the buffer to the stream's underlying store, if any.</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_ac496ab63c9b3d68c60e8e5697cdd3008"><div class="ttname"><a href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008">avro::StreamReader::in_</a></div><div class="ttdeci">InputStream * in_</div><div class="ttdoc">The underlying input stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:231</div></div>
<div class="ttc" id="anamespaceavro_html_a164e34d709ba33d2464c295e7874f784"><div class="ttname"><a href="namespaceavro.html#a164e34d709ba33d2464c295e7874f784">avro::fileOutputStream</a></div><div class="ttdeci">AVRO_DECL OutputStreamPtr fileOutputStream(const char *filename, size_t bufferSize=8 *1024)</div><div class="ttdoc">Returns a new OutputStream whose contents would be stored in a file.</div></div>
<div class="ttc" id="anamespaceavro_html_a9033beeae2950b3e73d99482d3936929"><div class="ttname"><a href="namespaceavro.html#a9033beeae2950b3e73d99482d3936929">avro::nonSeekableIstreamInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr nonSeekableIstreamInputStream(std::istream &amp;is, size_t bufferSize=8 *1024)</div><div class="ttdoc">Returns a new InputStream whose contents come from the given std::istream.</div></div>
<div class="ttc" id="anamespaceavro_html_a98b7a8baaef11e477db89699ab27359b"><div class="ttname"><a href="namespaceavro.html#a98b7a8baaef11e477db89699ab27359b">avro::memoryInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr memoryInputStream(const uint8_t *data, size_t len)</div><div class="ttdoc">Returns a new InputStream, with the data from the given byte array.</div></div>
<div class="ttc" id="anamespaceavro_html_acb2ea7a6b8a82014ce7d76abcc171812"><div class="ttname"><a href="namespaceavro.html#acb2ea7a6b8a82014ce7d76abcc171812">avro::ostreamOutputStream</a></div><div class="ttdeci">AVRO_DECL OutputStreamPtr ostreamOutputStream(std::ostream &amp;os, size_t bufferSize=8 *1024)</div><div class="ttdoc">Returns a new OutputStream whose contents will be sent to the given std::ostream.</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a8163904c80aca61a9a1c35d9b1b4604d"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d">avro::StreamWriter::flush</a></div><div class="ttdeci">void flush()</div><div class="ttdoc">backs up upto the currently written data and flushes the underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:430</div></div>
<div class="ttc" id="anamespaceavro_html_a0e961740e43d3f800220f03de11654e8"><div class="ttname"><a href="namespaceavro.html#a0e961740e43d3f800220f03de11654e8">avro::memoryOutputStream</a></div><div class="ttdeci">AVRO_DECL OutputStreamPtr memoryOutputStream(size_t chunkSize=4 *1024)</div><div class="ttdoc">Returns a new OutputStream, which grows in memory chunks of specified size.</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a25be160ee9e5fd541c0004066376c4ac"><div class="ttname"><a href="structavro_1_1StreamReader.html#a25be160ee9e5fd541c0004066376c4ac">avro::StreamReader::skipBytes</a></div><div class="ttdeci">void skipBytes(size_t n)</div><div class="ttdoc">Skips the given number of bytes.</div><div class="ttdef"><b>Definition:</b> Stream.hh:300</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a293c20163efcc2d0380fab80f3c82058"><div class="ttname"><a href="structavro_1_1StreamReader.html#a293c20163efcc2d0380fab80f3c82058">avro::StreamReader::reset</a></div><div class="ttdeci">void reset(InputStream &amp;is)</div><div class="ttdoc">Replaces the current input stream with the given one after backing up the original one if required.</div><div class="ttdef"><b>Definition:</b> Stream.hh:257</div></div>
<div class="ttc" id="aclassavro_1_1InputStream_html"><div class="ttname"><a href="classavro_1_1InputStream.html">avro::InputStream</a></div><div class="ttdoc">A no-copy input stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:36</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a4f7275c5b1eb184a154760c1cbb192a5"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">avro::StreamWriter::end_</a></div><div class="ttdeci">uint8_t * end_</div><div class="ttdoc">One past the last location one can write to.</div><div class="ttdef"><b>Definition:</b> Stream.hh:373</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a8c0e8d18a3dd81d77dbefe7cf5783986"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">avro::StreamWriter::next_</a></div><div class="ttdeci">uint8_t * next_</div><div class="ttdoc">The next location to write to.</div><div class="ttdef"><b>Definition:</b> Stream.hh:368</div></div>
<div class="ttc" id="aclassavro_1_1InputStream_html_a4ec852f779fc68dea8fef197ec3eef1d"><div class="ttname"><a href="classavro_1_1InputStream.html#a4ec852f779fc68dea8fef197ec3eef1d">avro::InputStream::skip</a></div><div class="ttdeci">virtual void skip(size_t len)=0</div><div class="ttdoc">Skips number of bytes specified by len.</div></div>
<div class="ttc" id="aclassavro_1_1InputStream_html_a87767c15b0661981d24f7a42bfcef6b5"><div class="ttname"><a href="classavro_1_1InputStream.html#a87767c15b0661981d24f7a42bfcef6b5">avro::InputStream::next</a></div><div class="ttdeci">virtual bool next(const uint8_t **data, size_t *len)=0</div><div class="ttdoc">Returns some of available data.</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html"><div class="ttname"><a href="structavro_1_1StreamReader.html">avro::StreamReader</a></div><div class="ttdoc">A convenience class for reading from an InputStream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:227</div></div>
<div class="ttc" id="anamespaceavro_html"><div class="ttname"><a href="namespaceavro.html">avro</a></div><div class="ttdoc">A bunch of templates and specializations for encoding and decoding specific types.</div><div class="ttdef"><b>Definition:</b> AvroParse.hh:30</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a2fbdd9e896bdfb7f704b52243b4f1661"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a2fbdd9e896bdfb7f704b52243b4f1661">avro::StreamWriter::byteCount</a></div><div class="ttdeci">int64_t byteCount() const</div><div class="ttdoc">Return the number of bytes written so far.</div><div class="ttdef"><b>Definition:</b> Stream.hh:442</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a9501052d3dbbf54070f565bc0f0d644a"><div class="ttname"><a href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a">avro::StreamReader::more</a></div><div class="ttdeci">void more()</div><div class="ttdoc">Tries to get more data and if it cannot, throws an exception.</div><div class="ttdef"><b>Definition:</b> Stream.hh:330</div></div>
<div class="ttc" id="anamespaceavro_html_a1e5251d2ad9581e353399c1bac90c9fb"><div class="ttname"><a href="namespaceavro.html#a1e5251d2ad9581e353399c1bac90c9fb">avro::fileInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr fileInputStream(const char *filename, size_t bufferSize=8 *1024)</div><div class="ttdoc">Returns a new InputStream whose contents come from the given file.</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a5e20cd787a15c2941c90b6d077c73d14"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a5e20cd787a15c2941c90b6d077c73d14">avro::StreamWriter::StreamWriter</a></div><div class="ttdeci">StreamWriter()</div><div class="ttdoc">Constructs a writer with no underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:378</div></div>
<div class="ttc" id="anamespaceavro_html_a1d938bbd6332e4c247e5a975ca066647"><div class="ttname"><a href="namespaceavro.html#a1d938bbd6332e4c247e5a975ca066647">avro::snapshot</a></div><div class="ttdeci">AVRO_DECL std::shared_ptr&lt; std::vector&lt; uint8_t &gt; &gt; snapshot(const OutputStream &amp;source)</div><div class="ttdoc">Returns the contents written so far into the output stream, which should be a memory output stream.</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a8c31fc602f068368d7a0e91eea71c4de"><div class="ttname"><a href="structavro_1_1StreamReader.html#a8c31fc602f068368d7a0e91eea71c4de">avro::StreamReader::drain</a></div><div class="ttdeci">void drain(bool unRead)</div><div class="ttdoc">Returns unused bytes back to the underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:347</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_ac404aa90132b520e7c45cec577d18d94"><div class="ttname"><a href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">avro::StreamReader::next_</a></div><div class="ttdeci">const uint8_t * next_</div><div class="ttdoc">The next location to read from.</div><div class="ttdef"><b>Definition:</b> Stream.hh:236</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a463de69a6b09caa9cb8467b75ecfd710"><div class="ttname"><a href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">avro::StreamReader::end_</a></div><div class="ttdeci">const uint8_t * end_</div><div class="ttdoc">One past the last valid location.</div><div class="ttdef"><b>Definition:</b> Stream.hh:241</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a93740c70becb0f206a05c5dd1f2a7880"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880">avro::StreamWriter::more</a></div><div class="ttdeci">void more()</div><div class="ttdoc">Gets more space to write to.</div><div class="ttdef"><b>Definition:</b> Stream.hh:449</div></div>
<div class="ttc" id="anamespaceavro_html_aff15582cf7ee211e1b2e0968a0edbd7e"><div class="ttname"><a href="namespaceavro.html#aff15582cf7ee211e1b2e0968a0edbd7e">avro::istreamInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr istreamInputStream(std::istream &amp;in, size_t bufferSize=8 *1024)</div><div class="ttdoc">Returns a new InputStream whose contents come from the given std::istream.</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_ae2f45670ed6815c76103245665f0ee25"><div class="ttname"><a href="structavro_1_1StreamReader.html#ae2f45670ed6815c76103245665f0ee25">avro::StreamReader::readBytes</a></div><div class="ttdeci">void readBytes(uint8_t *b, size_t n)</div><div class="ttdoc">Reads the given number of bytes from the underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:280</div></div>
<div class="ttc" id="aclassavro_1_1OutputStream_html_a81881efd901311b1fc6610f77791adfe"><div class="ttname"><a href="classavro_1_1OutputStream.html#a81881efd901311b1fc6610f77791adfe">avro::OutputStream::backup</a></div><div class="ttdeci">virtual void backup(size_t len)=0</div><div class="ttdoc">&quot;Returns&quot; back to the stream some of the buffer obtained from in the last call to next().</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_ad364f5ec1191462b88d75fdc29ddd639"><div class="ttname"><a href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639">avro::StreamReader::StreamReader</a></div><div class="ttdeci">StreamReader(InputStream &amp;in)</div><div class="ttdoc">Constructs a reader with the given underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:251</div></div>
<div class="ttc" id="anamespaceavro_html_adeab3d9f5f2a4a4f96d3ffb8ba27e523"><div class="ttname"><a href="namespaceavro.html#adeab3d9f5f2a4a4f96d3ffb8ba27e523">avro::copy</a></div><div class="ttdeci">void copy(InputStream &amp;in, OutputStream &amp;out)</div><div class="ttdoc">A convenience function to copy all the contents of an input stream into an output stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:465</div></div>
<div class="ttc" id="aclassavro_1_1OutputStream_html_a257177c7b0f2e98c523cb2ae68737e18"><div class="ttname"><a href="classavro_1_1OutputStream.html#a257177c7b0f2e98c523cb2ae68737e18">avro::OutputStream::next</a></div><div class="ttdeci">virtual bool next(uint8_t **data, size_t *len)=0</div><div class="ttdoc">Returns a buffer that can be written into.</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html"><div class="ttname"><a href="structavro_1_1StreamWriter.html">avro::StreamWriter</a></div><div class="ttdoc">A convenience class to write data into an OutputStream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:359</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a18f69b15f00ea780ee61f50c9467e0a7"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7">avro::StreamWriter::out_</a></div><div class="ttdeci">OutputStream * out_</div><div class="ttdoc">The underlying output stream for this writer.</div><div class="ttdef"><b>Definition:</b> Stream.hh:363</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_a1f69076d05b5711cf0695d1a91193737"><div class="ttname"><a href="structavro_1_1StreamReader.html#a1f69076d05b5711cf0695d1a91193737">avro::StreamReader::StreamReader</a></div><div class="ttdeci">StreamReader()</div><div class="ttdoc">Constructs an empty reader.</div><div class="ttdef"><b>Definition:</b> Stream.hh:246</div></div>
<div class="ttc" id="aclassavro_1_1InputStream_html_a03f9cfac5f7a0141bfe7d6cc4bc7a0d0"><div class="ttname"><a href="classavro_1_1InputStream.html#a03f9cfac5f7a0141bfe7d6cc4bc7a0d0">avro::InputStream::backup</a></div><div class="ttdeci">virtual void backup(size_t len)=0</div><div class="ttdoc">&quot;Returns&quot; back some of the data to the stream.</div></div>
<div class="ttc" id="aclassavro_1_1OutputStream_html_ab799b7bad4c75b5ade65fa6fd117a4b4"><div class="ttname"><a href="classavro_1_1OutputStream.html#ab799b7bad4c75b5ade65fa6fd117a4b4">avro::OutputStream::byteCount</a></div><div class="ttdeci">virtual uint64_t byteCount() const =0</div><div class="ttdoc">Number of bytes written so far into this stream.</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a8edff3e28052978180a42b2f792eb28d"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a8edff3e28052978180a42b2f792eb28d">avro::StreamWriter::write</a></div><div class="ttdeci">void write(uint8_t c)</div><div class="ttdoc">Writes a single byte.</div><div class="ttdef"><b>Definition:</b> Stream.hh:400</div></div>
<div class="ttc" id="astructavro_1_1StreamWriter_html_a9e1685a3f609d96f8da8678ee8036350"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350">avro::StreamWriter::StreamWriter</a></div><div class="ttdeci">StreamWriter(OutputStream &amp;out)</div><div class="ttdoc">Constructs a new writer with the given underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:383</div></div>
<div class="ttc" id="aclassavro_1_1Exception_html"><div class="ttname"><a href="classavro_1_1Exception.html">avro::Exception</a></div><div class="ttdoc">Wrapper for std::runtime_error that provides convenience constructor for boost::format objects.</div><div class="ttdef"><b>Definition:</b> Exception.hh:31</div></div>
<div class="ttc" id="astructavro_1_1StreamReader_html_ace1b429f51df3702a33d2991031ac2f8"><div class="ttname"><a href="structavro_1_1StreamReader.html#ace1b429f51df3702a33d2991031ac2f8">avro::StreamReader::read</a></div><div class="ttdeci">uint8_t read()</div><div class="ttdoc">Read just one byte from the underlying stream.</div><div class="ttdef"><b>Definition:</b> Stream.hh:269</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>