⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secblock_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00352"></a>00352         {<a name="l00353"></a>00353                 <a class="code" href="class_sec_block.html#90d46e577c951d81a2d25a4742a3e979" title="change size, without preserving contents">New</a>(t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>);<a name="l00354"></a>00354                 memcpy_s(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T), t.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T));<a name="l00355"></a>00355         }<a name="l00356"></a>00356 <a name="l00357"></a><a class="code" href="class_sec_block.html#db8cdaa95af4f2c8597d01930f90fac2">00357</a>         <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a>&amp; <a class="code" href="class_sec_block.html#db8cdaa95af4f2c8597d01930f90fac2">operator=</a>(<span class="keyword">const</span> <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;t)<a name="l00358"></a>00358         {<a name="l00359"></a>00359                 <a class="code" href="class_sec_block.html#2cf5dc5e31c63eb927f935af6104f36a" title="set contents and size">Assign</a>(t);<a name="l00360"></a>00360                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;<a name="l00361"></a>00361         }<a name="l00362"></a>00362 <a name="l00363"></a>00363         <span class="comment">// append to this object</span><a name="l00364"></a><a class="code" href="class_sec_block.html#cf49f5fe6f6c2e1ae8e8c13e9eec38fc">00364</a>         <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a>&amp; <a class="code" href="class_sec_block.html#cf49f5fe6f6c2e1ae8e8c13e9eec38fc">operator+=</a>(<span class="keyword">const</span> <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;t)<a name="l00365"></a>00365         {<a name="l00366"></a>00366                 <a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> oldSize = <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>;<a name="l00367"></a>00367                 <a class="code" href="class_sec_block.html#8dea287fba8236b0979b52beece0ec1b" title="change size only if newSize &gt; current size. contents are preserved">Grow</a>(<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>+t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>);<a name="l00368"></a>00368                 memcpy_s(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>+oldSize, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T), t.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T));<a name="l00369"></a>00369                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;<a name="l00370"></a>00370         }<a name="l00371"></a>00371 <a name="l00372"></a>00372         <span class="comment">// append operator</span><a name="l00373"></a><a class="code" href="class_sec_block.html#4c641a244b1d12301db043b066968ffc">00373</a>         <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> <a class="code" href="class_sec_block.html#4c641a244b1d12301db043b066968ffc">operator+</a>(<span class="keyword">const</span> <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;t)<a name="l00374"></a>00374         {<a name="l00375"></a>00375                 <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> result(<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>+t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>);<a name="l00376"></a>00376                 memcpy_s(result.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, result.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T), <a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T));<a name="l00377"></a>00377                 memcpy_s(result.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>+<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T), t.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T));<a name="l00378"></a>00378                 <span class="keywordflow">return</span> result;<a name="l00379"></a>00379         }<a name="l00380"></a>00380 <a name="l00381"></a><a class="code" href="class_sec_block.html#bd321a0646052f6179be33f88beabfb9">00381</a>         <span class="keywordtype">bool</span> <a class="code" href="class_sec_block.html#bd321a0646052f6179be33f88beabfb9">operator==</a>(<span class="keyword">const</span> <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;t)<span class="keyword"> const</span><a name="l00382"></a>00382 <span class="keyword">        </span>{<a name="l00383"></a>00383                 <span class="keywordflow">return</span> <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> == t.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> &amp;&amp; memcmp(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, t.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T)) == 0;<a name="l00384"></a>00384         }<a name="l00385"></a>00385 <a name="l00386"></a><a class="code" href="class_sec_block.html#7e41d156d4146d59b618191df6991a11">00386</a>         <span class="keywordtype">bool</span> <a class="code" href="class_sec_block.html#7e41d156d4146d59b618191df6991a11">operator!=</a>(<span class="keyword">const</span> <a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;t)<span class="keyword"> const</span><a name="l00387"></a>00387 <span class="keyword">        </span>{<a name="l00388"></a>00388                 <span class="keywordflow">return</span> !<a class="code" href="class_sec_block.html#bd321a0646052f6179be33f88beabfb9">operator==</a>(t);<a name="l00389"></a>00389         }<a name="l00390"></a>00390 <span class="comment"></span><a name="l00391"></a>00391 <span class="comment">        //! change size, without preserving contents</span><a name="l00392"></a><a class="code" href="class_sec_block.html#90d46e577c951d81a2d25a4742a3e979">00392</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#90d46e577c951d81a2d25a4742a3e979" title="change size, without preserving contents">New</a>(<a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> newSize)<a name="l00393"></a>00393         {<a name="l00394"></a>00394                 <a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a> = <a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>.reallocate(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, newSize, <span class="keyword">false</span>);<a name="l00395"></a>00395                 <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> = newSize;<a name="l00396"></a>00396         }<a name="l00397"></a>00397 <span class="comment"></span><a name="l00398"></a>00398 <span class="comment">        //! change size and set contents to 0</span><a name="l00399"></a><a class="code" href="class_sec_block.html#2d78e75002fd02e5b89bd72a9e65e769">00399</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#2d78e75002fd02e5b89bd72a9e65e769" title="change size and set contents to 0">CleanNew</a>(<a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> newSize)<a name="l00400"></a>00400         {<a name="l00401"></a>00401                 <a class="code" href="class_sec_block.html#90d46e577c951d81a2d25a4742a3e979" title="change size, without preserving contents">New</a>(newSize);<a name="l00402"></a>00402                 memset(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, 0, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>*<span class="keyword">sizeof</span>(T));<a name="l00403"></a>00403         }<a name="l00404"></a>00404 <span class="comment"></span><a name="l00405"></a>00405 <span class="comment">        //! change size only if newSize &gt; current size. contents are preserved</span><a name="l00406"></a><a class="code" href="class_sec_block.html#8dea287fba8236b0979b52beece0ec1b">00406</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#8dea287fba8236b0979b52beece0ec1b" title="change size only if newSize &gt; current size. contents are preserved">Grow</a>(<a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> newSize)<a name="l00407"></a>00407         {<a name="l00408"></a>00408                 <span class="keywordflow">if</span> (newSize &gt; <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>)<a name="l00409"></a>00409                 {<a name="l00410"></a>00410                         <a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a> = <a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>.reallocate(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, newSize, <span class="keyword">true</span>);<a name="l00411"></a>00411                         <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> = newSize;<a name="l00412"></a>00412                 }<a name="l00413"></a>00413         }<a name="l00414"></a>00414 <span class="comment"></span><a name="l00415"></a>00415 <span class="comment">        //! change size only if newSize &gt; current size. contents are preserved and additional area is set to 0</span><a name="l00416"></a><a class="code" href="class_sec_block.html#4ef9516e973051e6afa38bba526da3e9">00416</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#4ef9516e973051e6afa38bba526da3e9" title="change size only if newSize &gt; current size. contents are preserved and additional...">CleanGrow</a>(<a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> newSize)<a name="l00417"></a>00417         {<a name="l00418"></a>00418                 <span class="keywordflow">if</span> (newSize &gt; <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>)<a name="l00419"></a>00419                 {<a name="l00420"></a>00420                         <a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a> = <a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>.reallocate(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, newSize, <span class="keyword">true</span>);<a name="l00421"></a>00421                         memset(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>+<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, 0, (newSize-<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>)*<span class="keyword">sizeof</span>(T));<a name="l00422"></a>00422                         <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> = newSize;<a name="l00423"></a>00423                 }<a name="l00424"></a>00424         }<a name="l00425"></a>00425 <span class="comment"></span><a name="l00426"></a>00426 <span class="comment">        //! change size and preserve contents</span><a name="l00427"></a><a class="code" href="class_sec_block.html#f9e98d3f4a7af1156fcf3e6e68f4ae5a">00427</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#f9e98d3f4a7af1156fcf3e6e68f4ae5a" title="change size and preserve contents">resize</a>(<a class="code" href="class_sec_block.html#c37f179bc9420b7af601df75eaed3c90">size_type</a> newSize)<a name="l00428"></a>00428         {<a name="l00429"></a>00429                 <a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a> = <a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>.reallocate(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, newSize, <span class="keyword">true</span>);<a name="l00430"></a>00430                 <a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a> = newSize;<a name="l00431"></a>00431         }<a name="l00432"></a>00432 <span class="comment"></span><a name="l00433"></a>00433 <span class="comment">        //! swap contents and size with another SecBlock</span><a name="l00434"></a><a class="code" href="class_sec_block.html#3872f50f03372fa859803971961f02cd">00434</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="class_sec_block.html#3872f50f03372fa859803971961f02cd" title="swap contents and size with another SecBlock">swap</a>(<a class="code" href="class_sec_block.html" title="a block of memory allocated using A">SecBlock&lt;T, A&gt;</a> &amp;b)<a name="l00435"></a>00435         {<a name="l00436"></a>00436                 <a class="code" href="gf2n_8h.html#cd9c045f0b5c2a7595a8a0872dc80f59">std::swap</a>(<a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>, b.<a class="code" href="class_sec_block.html#536edaa408d09201419ac3fece8d894a">m_alloc</a>);<a name="l00437"></a>00437                 <a class="code" href="gf2n_8h.html#cd9c045f0b5c2a7595a8a0872dc80f59">std::swap</a>(<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>, b.<a class="code" href="class_sec_block.html#eed7a648f929f43b676b7a346b1373dd">m_size</a>);<a name="l00438"></a>00438                 <a class="code" href="gf2n_8h.html#cd9c045f0b5c2a7595a8a0872dc80f59">std::swap</a>(<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>, b.<a class="code" href="class_sec_block.html#9b8182b17492ab3098087c17fc3ea40e">m_ptr</a>);<a name="l00439"></a>00439         }<a 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -