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

📄 safecoll_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00285     }<a name="l00286"></a><a class="code" href="classPSafeLockReadOnly.html#a2">00286</a>     BOOL <a class="code" href="classPSafeLockReadOnly.html#a2">IsLocked</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPSafeLockReadOnly.html#n1">locked</a>; }<a name="l00287"></a><a class="code" href="classPSafeLockReadOnly.html#a3">00287</a>     <span class="keywordtype">bool</span> <a class="code" href="classPSafeLockReadOnly.html#a3">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classPSafeLockReadOnly.html#n1">locked</a>; }00288 00289   <span class="keyword">protected</span>:<a name="l00290"></a><a class="code" href="classPSafeLockReadOnly.html#n0">00290</a>     <a class="code" href="classPSafeObject.html">PSafeObject</a> &amp; <a class="code" href="classPSafeLockReadOnly.html#n0">safeObject</a>;<a name="l00291"></a><a class="code" href="classPSafeLockReadOnly.html#n1">00291</a>     BOOL          <a class="code" href="classPSafeLockReadOnly.html#n1">locked</a>;00292 };00293 00294 00295 <a name="l00298"></a><a class="code" href="classPSafeLockReadWrite.html">00298</a> <span class="keyword">class </span><a class="code" href="classPSafeLockReadWrite.html">PSafeLockReadWrite</a>00299 {00300   <span class="keyword">public</span>:<a name="l00301"></a><a class="code" href="classPSafeLockReadWrite.html#a0">00301</a>     <a class="code" href="classPSafeLockReadWrite.html#a0">PSafeLockReadWrite</a>(<span class="keyword">const</span> <a class="code" href="classPSafeObject.html">PSafeObject</a> &amp; object)00302       : <a class="code" href="classPSafeLockReadWrite.html#n0">safeObject</a>((<a class="code" href="classPSafeObject.html">PSafeObject</a> &amp;)object)00303     {00304       <a class="code" href="classPSafeLockReadWrite.html#n1">locked</a> = <a class="code" href="classPSafeLockReadWrite.html#n0">safeObject</a>.<a class="code" href="classPSafeObject.html#z321_4">LockReadWrite</a>();00305     }<a name="l00306"></a><a class="code" href="classPSafeLockReadWrite.html#a1">00306</a>     <a class="code" href="classPSafeLockReadWrite.html#a1">~PSafeLockReadWrite</a>()00307     {00308       <span class="keywordflow">if</span> (locked)00309         <a class="code" href="classPSafeLockReadWrite.html#n0">safeObject</a>.<a class="code" href="classPSafeObject.html#z321_5">UnlockReadWrite</a>();00310     }<a name="l00311"></a><a class="code" href="classPSafeLockReadWrite.html#a2">00311</a>     BOOL <a class="code" href="classPSafeLockReadWrite.html#a2">IsLocked</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPSafeLockReadWrite.html#n1">locked</a>; }<a name="l00312"></a><a class="code" href="classPSafeLockReadWrite.html#a3">00312</a>     <span class="keywordtype">bool</span> <a class="code" href="classPSafeLockReadWrite.html#a3">operator!</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classPSafeLockReadWrite.html#n1">locked</a>; }00313 00314   <span class="keyword">protected</span>:<a name="l00315"></a><a class="code" href="classPSafeLockReadWrite.html#n0">00315</a>     <a class="code" href="classPSafeObject.html">PSafeObject</a> &amp; <a class="code" href="classPSafeLockReadWrite.html#n0">safeObject</a>;<a name="l00316"></a><a class="code" href="classPSafeLockReadWrite.html#n1">00316</a>     BOOL          <a class="code" href="classPSafeLockReadWrite.html#n1">locked</a>;00317 };00318 00319 00320 <a name="l00333"></a><a class="code" href="classPSafeCollection.html">00333</a> <span class="keyword">class </span><a class="code" href="classPSafeCollection.html">PSafeCollection</a> : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00334 {00335     <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPSafeCollection.html">PSafeCollection</a>, <a class="code" href="classPObject.html">PObject</a>);00336   <span class="keyword">public</span>:00342     <a class="code" href="classPSafeCollection.html#z323_0">PSafeCollection</a>(00343       <a class="code" href="classPCollection.html">PCollection</a> * <a class="code" href="classPSafeCollection.html#n0">collection</a>    00344      );00345 00349     <a class="code" href="classPSafeCollection.html#z323_1">~PSafeCollection</a>();00351 00354   <span class="keyword">protected</span>:00363     <span class="keyword">virtual</span> BOOL <a class="code" href="classPSafeCollection.html#z325_9">SafeRemove</a>(00364       <a class="code" href="classPSafeObject.html">PSafeObject</a> * obj   00365     );00366 00375     <span class="keyword">virtual</span> BOOL <a class="code" href="classPSafeCollection.html#z325_10">SafeRemoveAt</a>(00376       PINDEX idx    00377     );00378 00379   <span class="keyword">public</span>:00382     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#z325_0">RemoveAll</a>();00383 <a name="l00388"></a><a class="code" href="classPSafeCollection.html#z325_1">00388</a>     <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#z325_1">AllowDeleteObjects</a>(00389       BOOL yes = TRUE   00390     ) { <a class="code" href="classPSafeCollection.html#n2">deleteObjects</a> = yes; }00391 <a name="l00396"></a><a class="code" href="classPSafeCollection.html#z325_2">00396</a>     <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#z325_2">DisallowDeleteObjects</a>() { <a class="code" href="classPSafeCollection.html#n2">deleteObjects</a> = FALSE; }00397 00402     <span class="keyword">virtual</span> BOOL <a class="code" href="classPSafeCollection.html#z325_3">DeleteObjectsToBeRemoved</a>();00403 00406     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#z325_4">DeleteObject</a>(<a class="code" href="classPObject.html">PObject</a> * object) <span class="keyword">const</span>;00407 00410     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#z325_5">SetAutoDeleteObjects</a>();00411 00416     PINDEX <a class="code" href="classPSafeCollection.html#z325_6">GetSize</a>() <span class="keyword">const</span>;00417 <a name="l00422"></a><a class="code" href="classPSafeCollection.html#z325_7">00422</a>     BOOL <a class="code" href="classPSafeCollection.html#z325_7">IsEmpty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPSafeCollection.html#z325_6">GetSize</a>() == 0; }00423 <a name="l00426"></a><a class="code" href="classPSafeCollection.html#z325_8">00426</a>     <span class="keyword">const</span> <a class="code" href="classPMutex.html">PMutex</a> &amp; <a class="code" href="classPSafeCollection.html#z325_8">GetMutex</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPSafeCollection.html#n1">collectionMutex</a>; }00428 00429   <span class="keyword">protected</span>:00430     <span class="keywordtype">void</span> <a class="code" href="classPSafeCollection.html#b0">SafeRemoveObject</a>(<a class="code" href="classPSafeObject.html">PSafeObject</a> * obj);00431     <a class="code" href="classPSafeCollection.html#b1">PDECLARE_NOTIFIER</a>(<a class="code" href="classPTimer.html">PTimer</a>, <a class="code" href="classPSafeCollection.html">PSafeCollection</a>, DeleteObjectsTimeout);00432 <a name="l00433"></a><a class="code" href="classPSafeCollection.html#n0">00433</a>     <a class="code" href="classPCollection.html">PCollection</a>  *     <a class="code" href="classPSafeCollection.html#n0">collection</a>;<a name="l00434"></a><a class="code" href="classPSafeCollection.html#n1">00434</a>     <span class="keyword">mutable</span> <a class="code" href="classPMutex.html">PMutex</a>     <a class="code" href="classPSafeCollection.html#n1">collectionMutex</a>;<a name="l00435"></a><a class="code" href="classPSafeCollection.html#n2">00435</a>     BOOL               <a class="code" href="classPSafeCollection.html#n2">deleteObjects</a>;<a name="l00436"></a><a class="code" href="classPSafeCollection.html#n3">00436</a>     PList&lt;PSafeObject&gt; <a class="code" href="classPSafeCollection.html#n3">toBeRemoved</a>;<a name="l00437"></a><a class="code" href="classPSafeCollection.html#n4">00437</a>     <a class="code" href="classPMutex.html">PMutex</a>             <a class="code" href="classPSafeCollection.html#n4">removalMutex</a>;<a name="l00438"></a><a class="code" href="classPSafeCollection.html#n5">00438</a>     <a class="code" href="classPTimer.html">PTimer</a>             <a class="code" href="classPSafeCollection.html#n5">deleteObjectsTimer</a>;00439 <a name="l00440"></a><a class="code" href="classPSafeCollection.html#l0">00440</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>;00441 };00442 00443 <a name="l00444"></a><a class="code" href="safecoll_8h.html#a4">00444</a> <span class="keyword">enum</span> <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> {00445   <a class="code" href="safecoll_8h.html#a4a0">PSafeReference</a>,00446   <a class="code" href="safecoll_8h.html#a4a1">PSafeReadOnly</a>,00447   <a class="code" href="safecoll_8h.html#a4a2">PSafeReadWrite</a>00448 };00449 <a name="l00465"></a><a class="code" href="classPSafePtrBase.html">00465</a> <span class="keyword">class </span><a class="code" href="classPSafePtrBase.html">PSafePtrBase</a> : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00466 {00467     <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>, <a class="code" href="classPObject.html">PObject</a>);00468 00471   <span class="keyword">protected</span>:00479     <a class="code" href="classPSafePtrBase.html#z327_1">PSafePtrBase</a>(00480       <a class="code" href="classPSafeObject.html">PSafeObject</a> * obj = NULL,         00481       <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode = <a class="code" href="safecoll_8h.html#a4a0">PSafeReference</a> 00482     );00483 00491     <a class="code" href="classPSafePtrBase.html#z327_1">PSafePtrBase</a>(00492       <span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> &amp; safeCollection, 00493       <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode,                       00494       PINDEX idx                              00495     );00496 00504     <a class="code" href="classPSafePtrBase.html#z327_1">PSafePtrBase</a>(00505       <span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> &amp; safeCollection, 00506       <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode,                       00507       <a class="code" href="classPSafeObject.html">PSafeObject</a> * obj                       00508     );00509 00515     <a class="code" href="classPSafePtrBase.html#z327_1">PSafePtrBase</a>(00516       <span class="keyword">const</span> <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a> &amp; enumerator   00517     );00518 00519   <span class="keyword">public</span>:00522     <a class="code" href="classPSafePtrBase.html#z327_0">~PSafePtrBase</a>();00524 00531     <a class="code" href="classPObject.html#z199_0">Comparison</a> <a class="code" href="classPSafePtrBase.html#z329_0">Compare</a>(00532       <span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> &amp; obj   00533     ) <span class="keyword">const</span>;00535 00538   <span class="keyword">public</span>:

⌨️ 快捷键说明

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