deploy: 433ada75b7be6b9c8609cbdacc929a67f31c653a

This commit is contained in:
rozmansi
2022-09-13 12:13:14 +00:00
parent 560e22024b
commit c449dde14c
39 changed files with 197 additions and 194 deletions

View File

@@ -183,96 +183,99 @@ $(function() {
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, const T_ID ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html"> 158</a></span> <span class="keyword">class </span><a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record</a></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> {</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#af90d32ea1d7d6ac964ae469db92a57db"> 166</a></span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#af90d32ea1d7d6ac964ae469db92a57db">record</a>(_In_ T &amp;d) : <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75">data</a>(d) {}</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a611da3801d9e7215324c9a5992a27f39"> 166</a></span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a611da3801d9e7215324c9a5992a27f39">record</a>(_In_ T &amp;d) : <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb">data</a>(d) {}</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#af65cec0fa6fb5caa57a01c1a7ff781a3"> 174</a></span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#af65cec0fa6fb5caa57a01c1a7ff781a3">record</a>(_In_ <span class="keyword">const</span> T &amp;d) : <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75">data</a>((T&amp;)d) {}</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#ab84a09093bd1a2cbf720329b84c6d73b"> 174</a></span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#ab84a09093bd1a2cbf720329b84c6d73b">record</a>(_In_ <span class="keyword">const</span> T &amp;d) : <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb">data</a>((T&amp;)d) {}</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a2f52ccdade2e0d749d7573a5a13164d9"> 180</a></span> <span class="keyword">static</span> <span class="keyword">const</span> T_ID <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a2f52ccdade2e0d749d7573a5a13164d9">id</a>();</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#affe758faa6d0617c7918ba4fb62d300d"> 190</a></span> <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record&lt;T, T_ID, T_SIZE, ALIGN&gt;</a>&amp; <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#affe758faa6d0617c7918ba4fb62d300d">operator =</a>(_In_ <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record&lt;T, T_ID, T_SIZE, ALIGN&gt;</a> &amp;r)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75">data</a> = r.data;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> }</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a779231561f1d295f48e152e476756dfa"> 204</a></span> <span class="keyword">static</span> std::streamoff <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a779231561f1d295f48e152e476756dfa">open</a>(_In_ std::ostream&amp; stream)</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> {</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">return</span> stdex::idrec::open&lt;T_ID, T_SIZE&gt;(stream, <span class="keywordtype">id</span>());</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a1037aeaca7a1f865d6b66352b2671108"> 218</a></span> <span class="keyword">static</span> std::streamoff <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a1037aeaca7a1f865d6b66352b2671108">close</a>(_In_ std::ostream&amp; stream, _In_ std::streamoff start)</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> {</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">return</span> stdex::idrec::close&lt;T_ID, T_SIZE, ALIGN&gt;(stream, start);</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> }</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a300a7b84f07cfba57ef4f63087365b1e"> 234</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a300a7b84f07cfba57ef4f63087365b1e">find</a>(_In_ std::istream&amp; stream, _In_opt_ std::streamoff end = (std::streamoff)-1)</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> {</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">return</span> stdex::idrec::find&lt;T_ID, T_SIZE, ALIGN&gt;(stream, <span class="keywordtype">id</span>(), end);</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75"> 240</a></span> T &amp;<a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75">data</a>; </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> };</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> };</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span>};</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span>std::ostream&amp; operator &lt;&lt;(_In_ std::ostream&amp; stream, _In_ <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record&lt;T, T_ID, T_SIZE, ALIGN&gt;</a> r)</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span>{</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="comment">// Parameter r does not need to be passed by reference. It has only one field (data), which is a reference itself already.</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> std::streamoff start = r.open(stream);</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keywordflow">if</span> (stream.fail()) <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> stream &lt;&lt; r.data;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> r.close(stream, start);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span>}</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a24e54541a476b01e332290c57a495926"> 180</a></span> <span class="keyword">static</span> <span class="keyword">const</span> T_ID <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a24e54541a476b01e332290c57a495926">id</a>()</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">return</span> ID;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> }</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a3d4bff1bf080fb8cb3960b5b5018392c"> 193</a></span> <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record&lt;T, T_ID, ID, T_SIZE, ALIGN&gt;</a>&amp; <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a3d4bff1bf080fb8cb3960b5b5018392c">operator =</a>(_In_ <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">record&lt;T, T_ID, ID, T_SIZE, ALIGN&gt;</a> &amp;r)</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb">data</a> = r.data;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> }</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a379d9eeac3c52375982ba75df33604ca"> 207</a></span> <span class="keyword">static</span> std::streamoff <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a379d9eeac3c52375982ba75df33604ca">open</a>(_In_ std::ostream&amp; stream)</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> {</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> stdex::idrec::open&lt;T_ID, T_SIZE&gt;(stream, ID);</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#ae63ba9487daaf8ec39dfe7dd04c13cc9"> 221</a></span> <span class="keyword">static</span> std::streamoff <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#ae63ba9487daaf8ec39dfe7dd04c13cc9">close</a>(_In_ std::ostream&amp; stream, _In_ std::streamoff start)</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> {</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordflow">return</span> stdex::idrec::close&lt;T_ID, T_SIZE, ALIGN&gt;(stream, start);</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> }</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a19523040d07119055884a7a2f8ef25fd"> 237</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classstdex_1_1idrec_1_1record.html#a19523040d07119055884a7a2f8ef25fd">find</a>(_In_ std::istream&amp; stream, _In_opt_ std::streamoff end = (std::streamoff)-1)</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> {</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">return</span> stdex::idrec::find&lt;T_ID, T_SIZE, ALIGN&gt;(stream, ID, end);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> </div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb"> 243</a></span> T &amp;<a class="code hl_variable" href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb">data</a>; </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> };</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> };</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span>};</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, T_ID ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span>std::ostream&amp; operator &lt;&lt;(_In_ std::ostream&amp; stream, _In_ <span class="keyword">const</span> <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record&lt;T, T_ID, ID, T_SIZE, ALIGN&gt;</a> r)</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>{</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="comment">// Parameter r does not need to be passed by reference. It has only one field (data), which is a reference itself already.</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> std::streamoff start = r.open(stream);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordflow">if</span> (stream.fail()) <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> stream &lt;&lt; r.data;</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> r.close(stream, start);</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span>std::istream&amp; operator &gt;&gt;(_In_ std::istream&amp; stream, _In_ <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record&lt;T, T_ID, T_SIZE, ALIGN&gt;</a> r)</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span>{</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="comment">// Parameter r does not need to be passed by reference. It has only one field (data), which is a reference itself already.</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> </div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="comment">// Read data size.</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> T_SIZE size;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> stream.read((<span class="keywordtype">char</span>*)&amp;size, <span class="keyword">sizeof</span>(size));</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keywordflow">if</span> (!stream.good()) <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="comment">// Read data.</span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> std::streamoff start = stream.tellg();</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> stream &gt;&gt; r.data; <span class="comment">// TODO: operator &gt;&gt; should not read past the record data! Make a size limited stream and read from it instead.</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> size += (T_SIZE)(ALIGN - size) % ALIGN;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> stream.seekg(start + size);</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span>}</div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> T_ID, T_ID ID, <span class="keyword">class</span> T_SIZE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGN&gt;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span>std::istream&amp; operator &gt;&gt;(_In_ std::istream&amp; stream, _In_ <a class="code hl_class" href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record&lt;T, T_ID, ID, T_SIZE, ALIGN&gt;</a> r)</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span>{</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="comment">// Parameter r does not need to be passed by reference. It has only one field (data), which is a reference itself already.</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="comment">// Read data size.</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> T_SIZE size;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> stream.read((<span class="keywordtype">char</span>*)&amp;size, <span class="keyword">sizeof</span>(size));</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keywordflow">if</span> (!stream.good()) <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> </div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="comment">// Read data.</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> std::streamoff start = stream.tellg();</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> stream &gt;&gt; r.data; <span class="comment">// TODO: operator &gt;&gt; should not read past the record data! Make a size limited stream and read from it instead.</span></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span>}</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> size += (T_SIZE)(ALIGN - size) % ALIGN;</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> stream.seekg(start + size);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">return</span> stream;</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span>}</div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html">stdex::idrec::record</a></div><div class="ttdoc">Helper class for read/write of records to/from memory.</div><div class="ttdef"><b>Definition:</b> idrec.h:159</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a0e101ce97e707a52aef4721b85230a75"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a0e101ce97e707a52aef4721b85230a75">stdex::idrec::record::data</a></div><div class="ttdeci">T &amp; data</div><div class="ttdoc">Record data reference.</div><div class="ttdef"><b>Definition:</b> idrec.h:240</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a1037aeaca7a1f865d6b66352b2671108"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a1037aeaca7a1f865d6b66352b2671108">stdex::idrec::record::close</a></div><div class="ttdeci">static std::streamoff close(std::ostream &amp;stream, std::streamoff start)</div><div class="ttdoc">Updates record header.</div><div class="ttdef"><b>Definition:</b> idrec.h:218</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a2f52ccdade2e0d749d7573a5a13164d9"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a2f52ccdade2e0d749d7573a5a13164d9">stdex::idrec::record::id</a></div><div class="ttdeci">static const T_ID id()</div><div class="ttdoc">Returns record id.</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a300a7b84f07cfba57ef4f63087365b1e"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a300a7b84f07cfba57ef4f63087365b1e">stdex::idrec::record::find</a></div><div class="ttdeci">static bool find(std::istream &amp;stream, std::streamoff end=(std::streamoff) -1)</div><div class="ttdoc">Finds record data.</div><div class="ttdef"><b>Definition:</b> idrec.h:234</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a779231561f1d295f48e152e476756dfa"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a779231561f1d295f48e152e476756dfa">stdex::idrec::record::open</a></div><div class="ttdeci">static std::streamoff open(std::ostream &amp;stream)</div><div class="ttdoc">Writes record header.</div><div class="ttdef"><b>Definition:</b> idrec.h:204</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_af65cec0fa6fb5caa57a01c1a7ff781a3"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#af65cec0fa6fb5caa57a01c1a7ff781a3">stdex::idrec::record::record</a></div><div class="ttdeci">record(const T &amp;d)</div><div class="ttdoc">Constructs the class.</div><div class="ttdef"><b>Definition:</b> idrec.h:174</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_af90d32ea1d7d6ac964ae469db92a57db"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#af90d32ea1d7d6ac964ae469db92a57db">stdex::idrec::record::record</a></div><div class="ttdeci">record(T &amp;d)</div><div class="ttdoc">Constructs the class.</div><div class="ttdef"><b>Definition:</b> idrec.h:166</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_affe758faa6d0617c7918ba4fb62d300d"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#affe758faa6d0617c7918ba4fb62d300d">stdex::idrec::record::operator=</a></div><div class="ttdeci">const record&lt; T, T_ID, T_SIZE, ALIGN &gt; &amp; operator=(const record&lt; T, T_ID, T_SIZE, ALIGN &gt; &amp;r)</div><div class="ttdoc">Assignment operator.</div><div class="ttdef"><b>Definition:</b> idrec.h:190</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a19523040d07119055884a7a2f8ef25fd"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a19523040d07119055884a7a2f8ef25fd">stdex::idrec::record::find</a></div><div class="ttdeci">static bool find(std::istream &amp;stream, std::streamoff end=(std::streamoff) -1)</div><div class="ttdoc">Finds record data.</div><div class="ttdef"><b>Definition:</b> idrec.h:237</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a1ab09fae53142836c958a63137fb37cb"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb">stdex::idrec::record::data</a></div><div class="ttdeci">T &amp; data</div><div class="ttdoc">Record data reference.</div><div class="ttdef"><b>Definition:</b> idrec.h:243</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a24e54541a476b01e332290c57a495926"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a24e54541a476b01e332290c57a495926">stdex::idrec::record::id</a></div><div class="ttdeci">static const T_ID id()</div><div class="ttdoc">Returns record id.</div><div class="ttdef"><b>Definition:</b> idrec.h:180</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a379d9eeac3c52375982ba75df33604ca"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a379d9eeac3c52375982ba75df33604ca">stdex::idrec::record::open</a></div><div class="ttdeci">static std::streamoff open(std::ostream &amp;stream)</div><div class="ttdoc">Writes record header.</div><div class="ttdef"><b>Definition:</b> idrec.h:207</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a3d4bff1bf080fb8cb3960b5b5018392c"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a3d4bff1bf080fb8cb3960b5b5018392c">stdex::idrec::record::operator=</a></div><div class="ttdeci">const record&lt; T, T_ID, ID, T_SIZE, ALIGN &gt; &amp; operator=(const record&lt; T, T_ID, ID, T_SIZE, ALIGN &gt; &amp;r)</div><div class="ttdoc">Assignment operator.</div><div class="ttdef"><b>Definition:</b> idrec.h:193</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_a611da3801d9e7215324c9a5992a27f39"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#a611da3801d9e7215324c9a5992a27f39">stdex::idrec::record::record</a></div><div class="ttdeci">record(T &amp;d)</div><div class="ttdoc">Constructs the class.</div><div class="ttdef"><b>Definition:</b> idrec.h:166</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_ab84a09093bd1a2cbf720329b84c6d73b"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#ab84a09093bd1a2cbf720329b84c6d73b">stdex::idrec::record::record</a></div><div class="ttdeci">record(const T &amp;d)</div><div class="ttdoc">Constructs the class.</div><div class="ttdef"><b>Definition:</b> idrec.h:174</div></div>
<div class="ttc" id="aclassstdex_1_1idrec_1_1record_html_ae63ba9487daaf8ec39dfe7dd04c13cc9"><div class="ttname"><a href="classstdex_1_1idrec_1_1record.html#ae63ba9487daaf8ec39dfe7dd04c13cc9">stdex::idrec::record::close</a></div><div class="ttdeci">static std::streamoff close(std::ostream &amp;stream, std::streamoff start)</div><div class="ttdoc">Updates record header.</div><div class="ttdef"><b>Definition:</b> idrec.h:221</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Sep 13 2022 11:24:13 for stdex by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
Generated on Tue Sep 13 2022 12:13:12 for stdex by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>