| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> |
| <meta name="generator" content="Doxygen 1.8.13"/> |
| <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.13 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <script type="text/javascript" src="menudata.js"></script> |
| <script type="text/javascript" src="menu.js"></script> |
| <script type="text/javascript"> |
| $(function() { |
| initMenu('',true,false,'search.php','Search'); |
| $(document).ready(function() { init_search(); }); |
| }); |
| </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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <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> <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> <span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <span class="comment"> * "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <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> <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> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> */</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef avro_Stream_hh__</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define avro_Stream_hh__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "boost/utility.hpp"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Config.hh"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Exception.hh"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <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> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classavro_1_1InputStream.html"> 36</a></span> <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> <span class="keyword">protected</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classavro_1_1InputStream.html#a252c2091ab50e6060e33ccbc7878bc6c"> 42</a></span>  <a class="code" href="classavro_1_1InputStream.html#a252c2091ab50e6060e33ccbc7878bc6c">InputStream</a>() { }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classavro_1_1InputStream.html#a1536aeefa0571f9fd80181503b6f501e"> 48</a></span>  <span class="keyword">virtual</span> <a class="code" href="classavro_1_1InputStream.html#a1536aeefa0571f9fd80181503b6f501e">~InputStream</a>() { }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <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="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <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="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <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="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> byteCount() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> };</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">typedef</span> std::unique_ptr<InputStream> InputStreamPtr;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classavro_1_1SeekableInputStream.html"> 83</a></span> <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="l00084"></a><span class="lineno"> 84</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classavro_1_1SeekableInputStream.html#a52fe8b3d7074457b098dbdcfe6835557"> 89</a></span>  <a class="code" href="classavro_1_1SeekableInputStream.html#a52fe8b3d7074457b098dbdcfe6835557">SeekableInputStream</a>() { }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classavro_1_1SeekableInputStream.html#a0f24f251960fc35d9b82401b0d07e5f0"> 95</a></span>  <span class="keyword">virtual</span> <a class="code" href="classavro_1_1SeekableInputStream.html#a0f24f251960fc35d9b82401b0d07e5f0">~SeekableInputStream</a>() { }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> seek(int64_t position) = 0;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">typedef</span> std::unique_ptr<SeekableInputStream> SeekableInputStreamPtr;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classavro_1_1OutputStream.html"> 110</a></span> <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="l00111"></a><span class="lineno"> 111</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classavro_1_1OutputStream.html#af22df848c85168c0f43100b5b1016a27"> 116</a></span>  <a class="code" href="classavro_1_1OutputStream.html#af22df848c85168c0f43100b5b1016a27">OutputStream</a>() { }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classavro_1_1OutputStream.html#a77073ae356848aef1232f38e0068ce58"> 122</a></span>  <span class="keyword">virtual</span> <a class="code" href="classavro_1_1OutputStream.html#a77073ae356848aef1232f38e0068ce58">~OutputStream</a>() { }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <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="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <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="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> uint64_t byteCount() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> flush() = 0;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">typedef</span> std::unique_ptr<OutputStream> OutputStreamPtr;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> 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="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> 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="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> 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>& source);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> AVRO_DECL std::shared_ptr<std::vector<uint8_t> > <a class="code" href="namespaceavro.html#a1d938bbd6332e4c247e5a975ca066647">snapshot</a>(<span class="keyword">const</span> <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a>& source);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> 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="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a1e5251d2ad9581e353399c1bac90c9fb">fileInputStream</a>(</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <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="l00197"></a><span class="lineno"> 197</span> AVRO_DECL SeekableInputStreamPtr fileSeekableInputStream(</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <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="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> AVRO_DECL OutputStreamPtr <a class="code" href="namespaceavro.html#acb2ea7a6b8a82014ce7d76abcc171812">ostreamOutputStream</a>(std::ostream& os,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#aff15582cf7ee211e1b2e0968a0edbd7e">istreamInputStream</a>(</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  std::istream &in, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> AVRO_DECL InputStreamPtr <a class="code" href="namespaceavro.html#a9033beeae2950b3e73d99482d3936929">nonSeekableIstreamInputStream</a>(</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  std::istream& is, <span class="keywordtype">size_t</span> bufferSize = 8 * 1024);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html"> 231</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1StreamReader.html">StreamReader</a> {</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ac496ab63c9b3d68c60e8e5697cdd3008"> 235</a></span>  <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="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94"> 240</a></span>  <span class="keyword">const</span> uint8_t* <a class="code" href="structavro_1_1StreamReader.html#ac404aa90132b520e7c45cec577d18d94">next_</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710"> 245</a></span>  <span class="keyword">const</span> uint8_t* <a class="code" href="structavro_1_1StreamReader.html#a463de69a6b09caa9cb8467b75ecfd710">end_</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a1f69076d05b5711cf0695d1a91193737"> 250</a></span>  <a class="code" href="structavro_1_1StreamReader.html#a1f69076d05b5711cf0695d1a91193737">StreamReader</a>() : in_(0), next_(0), end_(0) { }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639"> 255</a></span>  <a class="code" href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639">StreamReader</a>(<a class="code" href="classavro_1_1InputStream.html">InputStream</a>& in) : in_(0), next_(0), end_(0) { reset(in); }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a293c20163efcc2d0380fab80f3c82058"> 261</a></span>  <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>& is) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (in_ != 0 && end_ != next_) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  in_-><a class="code" href="classavro_1_1InputStream.html#a03f9cfac5f7a0141bfe7d6cc4bc7a0d0">backup</a>(end_ - next_);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  in_ = &is;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  next_ = end_ = 0;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ace1b429f51df3702a33d2991031ac2f8"> 273</a></span>  uint8_t <a class="code" href="structavro_1_1StreamReader.html#ace1b429f51df3702a33d2991031ac2f8">read</a>() {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (next_ == end_) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  more();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> *next_++;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ae2f45670ed6815c76103245665f0ee25"> 284</a></span>  <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="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">while</span> (n > 0) {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span> (next_ == end_) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  more();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordtype">size_t</span> q = end_ - next_;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (q > n) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  q = n;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  ::memcpy(b, next_, q);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  next_ += q;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  b += q;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  n -= q;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a25be160ee9e5fd541c0004066376c4ac"> 304</a></span>  <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="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span> (n > static_cast<size_t>(end_ - next_)) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  n -= end_ - next_;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  next_ = end_;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  in_-><a class="code" href="classavro_1_1InputStream.html#a4ec852f779fc68dea8fef197ec3eef1d">skip</a>(n);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  next_ += n;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76"> 320</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structavro_1_1StreamReader.html#af255c4f8690be489a0b623328e1cee76">fill</a>() {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">size_t</span> n = 0;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">while</span> (in_-><a class="code" href="classavro_1_1InputStream.html#a87767c15b0661981d24f7a42bfcef6b5">next</a>(&next_, &n)) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (n != 0) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  end_ = next_ + n;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a"> 334</a></span>  <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamReader.html#a9501052d3dbbf54070f565bc0f0d644a">more</a>() {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (! fill()) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"EOF reached"</span>);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#ad87f4fb3d42428965766169da50a7487"> 343</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structavro_1_1StreamReader.html#ad87f4fb3d42428965766169da50a7487">hasMore</a>() {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> (next_ == end_) ? fill() : <span class="keyword">true</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="structavro_1_1StreamReader.html#a8c31fc602f068368d7a0e91eea71c4de"> 351</a></span>  <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="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span> (unRead) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  --next_;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  in_-><a class="code" href="classavro_1_1InputStream.html#a03f9cfac5f7a0141bfe7d6cc4bc7a0d0">backup</a>(end_ - next_);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  end_ = next_;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> };</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html"> 363</a></span> <span class="keyword">struct </span><a class="code" href="structavro_1_1StreamWriter.html">StreamWriter</a> {</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a18f69b15f00ea780ee61f50c9467e0a7"> 367</a></span>  <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="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986"> 372</a></span>  uint8_t* <a class="code" href="structavro_1_1StreamWriter.html#a8c0e8d18a3dd81d77dbefe7cf5783986">next_</a>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5"> 377</a></span>  uint8_t* <a class="code" href="structavro_1_1StreamWriter.html#a4f7275c5b1eb184a154760c1cbb192a5">end_</a>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a5e20cd787a15c2941c90b6d077c73d14"> 382</a></span>  <a class="code" href="structavro_1_1StreamWriter.html#a5e20cd787a15c2941c90b6d077c73d14">StreamWriter</a>() : out_(0), next_(0), end_(0) { }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350"> 387</a></span>  <a class="code" href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350">StreamWriter</a>(<a class="code" href="classavro_1_1OutputStream.html">OutputStream</a>& out) : out_(0), next_(0), end_(0) { reset(out); }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#af3aaff674b77d7f98de86597da26b1f3"> 393</a></span>  <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>& os) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">if</span> (out_ != 0 && end_ != next_) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  out_-><a class="code" href="classavro_1_1OutputStream.html#a81881efd901311b1fc6610f77791adfe">backup</a>(end_ - next_);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  out_ = &os;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  next_ = end_;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8edff3e28052978180a42b2f792eb28d"> 404</a></span>  <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="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (next_ == end_) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  more();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  *next_++ = c;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a"> 414</a></span>  <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="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">while</span> (n > 0) {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span> (next_ == end_) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  more();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordtype">size_t</span> q = end_ - next_;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span> (q > n) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  q = n;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  ::memcpy(next_, b, q);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  next_ += q;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  b += q;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  n -= q;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d"> 434</a></span>  <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d">flush</a>() {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">if</span> (next_ != end_) {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  out_-><a class="code" href="classavro_1_1OutputStream.html#a81881efd901311b1fc6610f77791adfe">backup</a>(end_ - next_);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  next_ = end_;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  out_-><a class="code" href="classavro_1_1OutputStream.html#a4eba4b0bca41a7174460e2672782273d">flush</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a2fbdd9e896bdfb7f704b52243b4f1661"> 446</a></span>  int64_t <a class="code" href="structavro_1_1StreamWriter.html#a2fbdd9e896bdfb7f704b52243b4f1661">byteCount</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">return</span> out_-><a class="code" href="classavro_1_1OutputStream.html#ab799b7bad4c75b5ade65fa6fd117a4b4">byteCount</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880"> 453</a></span>  <span class="keywordtype">void</span> <a class="code" href="structavro_1_1StreamWriter.html#a93740c70becb0f206a05c5dd1f2a7880">more</a>() {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">size_t</span> n = 0;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">while</span> (out_-><a class="code" href="classavro_1_1OutputStream.html#a257177c7b0f2e98c523cb2ae68737e18">next</a>(&next_, &n)) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span> (n != 0) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  end_ = next_ + n;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">throw</span> <a class="code" href="classavro_1_1Exception.html">Exception</a>(<span class="stringliteral">"EOF reached"</span>);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> };</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="namespaceavro.html#adeab3d9f5f2a4a4f96d3ffb8ba27e523"> 469</a></span> <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>& in, <a class="code" href="classavro_1_1OutputStream.html">OutputStream</a>& out)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> uint8_t *p = 0;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">size_t</span> n = 0;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <a class="code" href="structavro_1_1StreamWriter.html">StreamWriter</a> w(out);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">while</span> (in.<a class="code" href="classavro_1_1InputStream.html#a87767c15b0661981d24f7a42bfcef6b5">next</a>(&p, &n)) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  w.<a class="code" href="structavro_1_1StreamWriter.html#a803e4adca5c39eeeb2fb179cdd26123a">writeBytes</a>(p, n);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  w.<a class="code" href="structavro_1_1StreamWriter.html#a8163904c80aca61a9a1c35d9b1b4604d">flush</a>();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> } <span class="comment">// namespace avro</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="ttc" id="namespaceavro_html_adeab3d9f5f2a4a4f96d3ffb8ba27e523"><div class="ttname"><a href="namespaceavro.html#adeab3d9f5f2a4a4f96d3ffb8ba27e523">avro::copy</a></div><div class="ttdeci">void copy(InputStream &in, OutputStream &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:469</div></div> |
| <div class="ttc" id="structavro_1_1StreamWriter_html_a9e1685a3f609d96f8da8678ee8036350"><div class="ttname"><a href="structavro_1_1StreamWriter.html#a9e1685a3f609d96f8da8678ee8036350">avro::StreamWriter::StreamWriter</a></div><div class="ttdeci">StreamWriter(OutputStream &out)</div><div class="ttdoc">Constructs a new writer with the given underlying stream. </div><div class="ttdef"><b>Definition:</b> Stream.hh:387</div></div> |
| <div class="ttc" id="classavro_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">"Returns" back some of the data to the stream. </div></div> |
| <div class="ttc" id="namespaceavro_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="structavro_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:240</div></div> |
| <div class="ttc" id="structavro_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:446</div></div> |
| <div class="ttc" id="structavro_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:434</div></div> |
| <div class="ttc" id="structavro_1_1StreamReader_html_ad364f5ec1191462b88d75fdc29ddd639"><div class="ttname"><a href="structavro_1_1StreamReader.html#ad364f5ec1191462b88d75fdc29ddd639">avro::StreamReader::StreamReader</a></div><div class="ttdeci">StreamReader(InputStream &in)</div><div class="ttdoc">Constructs a reader with the given underlying stream. </div><div class="ttdef"><b>Definition:</b> Stream.hh:255</div></div> |
| <div class="ttc" id="structavro_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:377</div></div> |
| <div class="ttc" id="structavro_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:250</div></div> |
| <div class="ttc" id="classavro_1_1InputStream_html_a1536aeefa0571f9fd80181503b6f501e"><div class="ttname"><a href="classavro_1_1InputStream.html#a1536aeefa0571f9fd80181503b6f501e">avro::InputStream::~InputStream</a></div><div class="ttdeci">virtual ~InputStream()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:48</div></div> |
| <div class="ttc" id="classavro_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="namespaceavro_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="structavro_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:304</div></div> |
| <div class="ttc" id="structavro_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:414</div></div> |
| <div class="ttc" id="structavro_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:284</div></div> |
| <div class="ttc" id="structavro_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:343</div></div> |
| <div class="ttc" id="classavro_1_1SeekableInputStream_html_a0f24f251960fc35d9b82401b0d07e5f0"><div class="ttname"><a href="classavro_1_1SeekableInputStream.html#a0f24f251960fc35d9b82401b0d07e5f0">avro::SeekableInputStream::~SeekableInputStream</a></div><div class="ttdeci">virtual ~SeekableInputStream()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:95</div></div> |
| <div class="ttc" id="structavro_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:453</div></div> |
| <div class="ttc" id="structavro_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:235</div></div> |
| <div class="ttc" id="classavro_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:83</div></div> |
| <div class="ttc" id="structavro_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:351</div></div> |
| <div class="ttc" id="structavro_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:404</div></div> |
| <div class="ttc" id="structavro_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:382</div></div> |
| <div class="ttc" id="classavro_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="structavro_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 &os)</div><div class="ttdoc">Replaces the current underlying stream with a new one. </div><div class="ttdef"><b>Definition:</b> Stream.hh:393</div></div> |
| <div class="ttc" id="classavro_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">"Returns" back to the stream some of the buffer obtained from in the last call to next()...</div></div> |
| <div class="ttc" id="namespaceavro_html_a9033beeae2950b3e73d99482d3936929"><div class="ttname"><a href="namespaceavro.html#a9033beeae2950b3e73d99482d3936929">avro::nonSeekableIstreamInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr nonSeekableIstreamInputStream(std::istream &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="namespaceavro_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="structavro_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:245</div></div> |
| <div class="ttc" id="structavro_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:372</div></div> |
| <div class="ttc" id="structavro_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 &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:261</div></div> |
| <div class="ttc" id="structavro_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:231</div></div> |
| <div class="ttc" id="namespaceavro_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="classavro_1_1SeekableInputStream_html_a52fe8b3d7074457b098dbdcfe6835557"><div class="ttname"><a href="classavro_1_1SeekableInputStream.html#a52fe8b3d7074457b098dbdcfe6835557">avro::SeekableInputStream::SeekableInputStream</a></div><div class="ttdeci">SeekableInputStream()</div><div class="ttdoc">An empty constuctor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:89</div></div> |
| <div class="ttc" id="classavro_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:110</div></div> |
| <div class="ttc" id="classavro_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="namespaceavro_html_a1d938bbd6332e4c247e5a975ca066647"><div class="ttname"><a href="namespaceavro.html#a1d938bbd6332e4c247e5a975ca066647">avro::snapshot</a></div><div class="ttdeci">AVRO_DECL std::shared_ptr< std::vector< uint8_t > > snapshot(const OutputStream &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="namespaceavro_html_aff15582cf7ee211e1b2e0968a0edbd7e"><div class="ttname"><a href="namespaceavro.html#aff15582cf7ee211e1b2e0968a0edbd7e">avro::istreamInputStream</a></div><div class="ttdeci">AVRO_DECL InputStreamPtr istreamInputStream(std::istream &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="structavro_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:320</div></div> |
| <div class="ttc" id="classavro_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="classavro_1_1InputStream_html_a252c2091ab50e6060e33ccbc7878bc6c"><div class="ttname"><a href="classavro_1_1InputStream.html#a252c2091ab50e6060e33ccbc7878bc6c">avro::InputStream::InputStream</a></div><div class="ttdeci">InputStream()</div><div class="ttdoc">An empty constuctor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:42</div></div> |
| <div class="ttc" id="classavro_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&#39;s underlying store, if any. </div></div> |
| <div class="ttc" id="classavro_1_1OutputStream_html_af22df848c85168c0f43100b5b1016a27"><div class="ttname"><a href="classavro_1_1OutputStream.html#af22df848c85168c0f43100b5b1016a27">avro::OutputStream::OutputStream</a></div><div class="ttdeci">OutputStream()</div><div class="ttdoc">An empty constuctor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:116</div></div> |
| <div class="ttc" id="structavro_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:367</div></div> |
| <div class="ttc" id="namespaceavro_html_acb2ea7a6b8a82014ce7d76abcc171812"><div class="ttname"><a href="namespaceavro.html#acb2ea7a6b8a82014ce7d76abcc171812">avro::ostreamOutputStream</a></div><div class="ttdeci">AVRO_DECL OutputStreamPtr ostreamOutputStream(std::ostream &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="namespaceavro_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="structavro_1_1StreamWriter_html"><div class="ttname"><a href="structavro_1_1StreamWriter.html">avro::StreamWriter</a></div><div class="ttdoc">A convinience class to write data into an OutputStream. </div><div class="ttdef"><b>Definition:</b> Stream.hh:363</div></div> |
| <div class="ttc" id="structavro_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:334</div></div> |
| <div class="ttc" id="classavro_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="classavro_1_1OutputStream_html_a77073ae356848aef1232f38e0068ce58"><div class="ttname"><a href="classavro_1_1OutputStream.html#a77073ae356848aef1232f38e0068ce58">avro::OutputStream::~OutputStream</a></div><div class="ttdeci">virtual ~OutputStream()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> Stream.hh:122</div></div> |
| <div class="ttc" id="classavro_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="structavro_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:273</div></div> |
| </div><!-- fragment --></div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated by  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.13 |
| </small></address> |
| </body> |
| </html> |