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

📄 algparam_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00271"></a>00271 <span class="preprocessor">#ifndef CRYPTOPP_UNCAUGHT_EXCEPTION_AVAILABLE</span><a name="l00272"></a>00272 <span class="preprocessor"></span>                <span class="keywordflow">catch</span>(...)<a name="l00273"></a>00273                 {<a name="l00274"></a>00274                 }<a name="l00275"></a>00275 <span class="preprocessor">#endif</span><a name="l00276"></a>00276 <span class="preprocessor"></span>        }<a name="l00277"></a>00277 <a name="l00278"></a>00278         <span class="keywordtype">bool</span> <a class="code" href="class_name_value_pairs.html#9fc3f5c4480d53b8104c67ca7958e332" title="to be implemented by derived classes, users should use one of the above functions...">GetVoidValue</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> std::type_info &amp;valueType, <span class="keywordtype">void</span> *pValue) <span class="keyword">const</span>;<a name="l00279"></a>00279 <a name="l00280"></a>00280 <span class="keyword">protected</span>:<a name="l00281"></a>00281         <span class="keyword">virtual</span> <span class="keywordtype">void</span> AssignValue(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> std::type_info &amp;valueType, <span class="keywordtype">void</span> *pValue) <span class="keyword">const</span> =0;<a name="l00282"></a>00282         <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &amp; GetParent() <span class="keyword">const</span> =0;<a name="l00283"></a>00283 <a name="l00284"></a><a class="code" href="class_algorithm_parameters_base.html#35cb481a90a884f7eb61de6fabfb83a6">00284</a>         <span class="keyword">const</span> <span class="keywordtype">char</span> *m_name;<a name="l00285"></a><a class="code" href="class_algorithm_parameters_base.html#2874ec341abb4c70e4f1b5ca05859035">00285</a>         <span class="keywordtype">bool</span> m_throwIfNotUsed;<a name="l00286"></a><a class="code" href="class_algorithm_parameters_base.html#3642eca6b27ce691a8289a6b99a8769d">00286</a>         <span class="keyword">mutable</span> <span class="keywordtype">bool</span> m_used;<a name="l00287"></a>00287 };<a name="l00288"></a>00288 <a name="l00289"></a>00289 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;<a name="l00290"></a><a class="code" href="class_algorithm_parameters_base2.html">00290</a> <span class="keyword">class </span><a class="code" href="class_algorithm_parameters_base2.html">AlgorithmParametersBase2</a> : <span class="keyword">public</span> <a class="code" href="class_algorithm_parameters_base.html#f156d30961a335fa134d25fd60d13afa">AlgorithmParametersBase</a><a name="l00291"></a>00291 {<a name="l00292"></a>00292 <span class="keyword">public</span>:<a name="l00293"></a><a class="code" href="class_algorithm_parameters_base2.html#4dd77322bfda5dffb9e5bdf84247dc60">00293</a>         <a class="code" href="class_algorithm_parameters_base2.html#4dd77322bfda5dffb9e5bdf84247dc60">AlgorithmParametersBase2</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> T &amp;value, <span class="keywordtype">bool</span> throwIfNotUsed) : <a class="code" href="class_algorithm_parameters_base.html#f156d30961a335fa134d25fd60d13afa">AlgorithmParametersBase</a>(name, throwIfNotUsed), <a class="code" href="class_algorithm_parameters_base2.html#4c2179db7b3913dcda6e12c31789088a">m_value</a>(value) {}<a name="l00294"></a>00294 <a name="l00295"></a><a class="code" href="class_algorithm_parameters_base2.html#5e4fd4f340db156bbd9111ceaf48160a">00295</a>         <span class="keywordtype">void</span> <a class="code" href="class_algorithm_parameters_base2.html#5e4fd4f340db156bbd9111ceaf48160a">AssignValue</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> std::type_info &amp;valueType, <span class="keywordtype">void</span> *pValue)<span class="keyword"> const</span><a name="l00296"></a>00296 <span class="keyword">        </span>{<a name="l00297"></a>00297                 <span class="comment">// special case for retrieving an Integer parameter when an int was passed in</span><a name="l00298"></a>00298                 <span class="keywordflow">if</span> (!(g_pAssignIntToInteger != NULL &amp;&amp; <span class="keyword">typeid</span>(T) == <span class="keyword">typeid</span>(<span class="keywordtype">int</span>) &amp;&amp; g_pAssignIntToInteger(valueType, pValue, &amp;<a class="code" href="class_algorithm_parameters_base2.html#4c2179db7b3913dcda6e12c31789088a">m_value</a>)))<a name="l00299"></a>00299                 {<a name="l00300"></a>00300                         <a class="code" href="class_name_value_pairs.html#a50a73b1705adb00ace9463b59696fb7" title="used by derived classes to check for type mismatch">ThrowIfTypeMismatch</a>(name, <span class="keyword">typeid</span>(T), valueType);<a name="l00301"></a>00301                         *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(pValue) = <a class="code" href="class_algorithm_parameters_base2.html#4c2179db7b3913dcda6e12c31789088a">m_value</a>;<a name="l00302"></a>00302                 }<a name="l00303"></a>00303         }<a name="l00304"></a>00304 <a name="l00305"></a>00305 <span class="keyword">protected</span>:<a name="l00306"></a><a class="code" href="class_algorithm_parameters_base2.html#4c2179db7b3913dcda6e12c31789088a">00306</a>         T <a class="code" href="class_algorithm_parameters_base2.html#4c2179db7b3913dcda6e12c31789088a">m_value</a>;<a name="l00307"></a>00307 };<a name="l00308"></a>00308 <a name="l00309"></a>00309 <span class="keyword">template</span> &lt;<span class="keyword">class</span> PARENT, <span class="keyword">class</span> T&gt;<a name="l00310"></a><a class="code" href="class_algorithm_parameters.html">00310</a> <span class="keyword">class </span><a class="code" href="class_algorithm_parameters.html">AlgorithmParameters</a> : <span class="keyword">public</span> <a class="code" href="class_algorithm_parameters_base2.html">AlgorithmParametersBase2</a>&lt;T&gt;<a name="l00311"></a>00311 {<a name="l00312"></a>00312 <span class="keyword">public</span>:<a name="l00313"></a><a class="code" href="class_algorithm_parameters.html#55945cd9dc5847b77c01e3da5284d354">00313</a>         <a class="code" href="class_algorithm_parameters.html#55945cd9dc5847b77c01e3da5284d354">AlgorithmParameters</a>(<span class="keyword">const</span> PARENT &amp;parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> T &amp;value, <span class="keywordtype">bool</span> throwIfNotUsed)<a name="l00314"></a>00314                 : <a class="code" href="class_algorithm_parameters_base2.html">AlgorithmParametersBase2</a>&lt;T&gt;(name, value, throwIfNotUsed), m_parent(parent)<a name="l00315"></a>00315         {}<a name="l00316"></a>00316 <a name="l00317"></a><a class="code" href="class_algorithm_parameters.html#c3a53177f57ab9178d8497de6d7a1f99">00317</a>         <a class="code" href="class_algorithm_parameters.html#55945cd9dc5847b77c01e3da5284d354">AlgorithmParameters</a>(<span class="keyword">const</span> <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters</a> &amp;copy)<a name="l00318"></a>00318                 : <a class="code" href="class_algorithm_parameters_base2.html">AlgorithmParametersBase2</a>&lt;T&gt;(copy), m_parent(copy.m_parent)<a name="l00319"></a>00319         {<a name="l00320"></a>00320                 copy.<a class="code" href="class_algorithm_parameters_base.html#3642eca6b27ce691a8289a6b99a8769d">m_used</a> = <span class="keyword">true</span>;<a name="l00321"></a>00321         }<a name="l00322"></a>00322 <a name="l00323"></a>00323         <span class="keyword">template</span> &lt;<span class="keyword">class</span> R&gt;<a name="l00324"></a><a class="code" href="class_algorithm_parameters.html#54367e06e982104cc46079a992f66d4f">00324</a>         <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;AlgorithmParameters&lt;PARENT,T&gt;</a>, R&gt; <a class="code" href="class_algorithm_parameters.html#54367e06e982104cc46079a992f66d4f">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> R &amp;value)<span class="keyword"> const</span><a name="l00325"></a>00325 <span class="keyword">        </span>{<a name="l00326"></a>00326                 <span class="keywordflow">return</span> <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;AlgorithmParameters&lt;PARENT,T&gt;</a>, R&gt;(*<span class="keyword">this</span>, name, value, this-&gt;<a class="code" href="class_algorithm_parameters_base.html#2874ec341abb4c70e4f1b5ca05859035">m_throwIfNotUsed</a>);<a name="l00327"></a>00327         }<a name="l00328"></a>00328 <a name="l00329"></a>00329         <span class="keyword">template</span> &lt;<span class="keyword">class</span> R&gt;<a name="l00330"></a><a class="code" href="class_algorithm_parameters.html#d2c0754720343a1e608a6020cafc1ea3">00330</a>         <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;AlgorithmParameters&lt;PARENT,T&gt;</a>, R&gt; <a class="code" href="class_algorithm_parameters.html#54367e06e982104cc46079a992f66d4f">operator()</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> R &amp;value, <span class="keywordtype">bool</span> throwIfNotUsed)<span class="keyword"> const</span><a name="l00331"></a>00331 <span class="keyword">        </span>{<a name="l00332"></a>00332                 <span class="keywordflow">return</span> <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;AlgorithmParameters&lt;PARENT,T&gt;</a>, R&gt;(*<span class="keyword">this</span>, name, value, throwIfNotUsed);<a name="l00333"></a>00333         }<a name="l00334"></a>00334 <a name="l00335"></a>00335 <span class="keyword">private</span>:<a name="l00336"></a>00336         <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &amp; GetParent()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_parent;}<a name="l00337"></a>00337         PARENT m_parent;<a name="l00338"></a>00338 };<a name="l00339"></a>00339 <span class="comment"></span><a name="l00340"></a>00340 <span class="comment">//! Create an object that implements NameValuePairs for passing parameters</span><a name="l00341"></a>00341 <span class="comment"></span><span class="comment">/*! \param throwIfNotUsed if true, the object will throw an exception if the value is not accessed</span><a name="l00342"></a>00342 <span class="comment">        \note throwIfNotUsed is ignored if using a compiler that does not support std::uncaught_exception(),</span><a name="l00343"></a>00343 <span class="comment">        such as MSVC 7.0 and earlier.</span><a name="l00344"></a>00344 <span class="comment">        \note A NameValuePairs object containing an arbitrary number of name value pairs may be constructed by</span><a name="l00345"></a>00345 <span class="comment">        repeatedly using operator() on the object returned by MakeParameters, for example:</span><a name="l00346"></a>00346 <span class="comment">        const NameValuePairs &amp;parameters = MakeParameters(name1, value1)(name2, value2)(name3, value3);</span><a name="l00347"></a>00347 <span class="comment">*/</span><a name="l00348"></a>00348 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;<a name="l00349"></a>00349 <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;NullNameValuePairs,T&gt;</a> MakeParameters(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> T &amp;value, <span class="keywordtype">bool</span> throwIfNotUsed = <span class="keyword">true</span>)<a name="l00350"></a>00350 {<a name="l00351"></a>00351         <span class="keywordflow">return</span> <a class="code" href="class_algorithm_parameters.html">AlgorithmParameters&lt;NullNameValuePairs,T&gt;</a>(g_nullNameValuePairs, name, value, throwIfNotUsed);<a name="l00352"></a>00352 }<a name="l00353"></a>00353 <a name="l00354"></a>00354 <span class="preprocessor">#define CRYPTOPP_GET_FUNCTION_ENTRY(name)               (Name::name(), &amp;ThisClass::Get##name)</span><a name="l00355"></a>00355 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_SET_FUNCTION_ENTRY(name)               (Name::name(), &amp;ThisClass::Set##name)</span><a name="l00356"></a>00356 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_SET_FUNCTION_ENTRY2(name1, name2)      (Name::name1(), Name::name2(), &amp;ThisClass::Set##name1##And##name2)</span><a name="l00357"></a>00357 <span class="preprocessor"></span><a name="l00358"></a>00358 NAMESPACE_END<a name="l00359"></a>00359 <a name="l00360"></a>00360 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:19 2007 for Crypto++ by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>

⌨️ 快捷键说明

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