📄 safecoll_8h-source.html
字号:
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> & <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> & object)00302 : <a class="code" href="classPSafeLockReadWrite.html#n0">safeObject</a>((<a class="code" href="classPSafeObject.html">PSafeObject</a> &)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> & <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> & <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<PSafeObject> <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> & 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> & 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> & 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> & obj 00533 ) <span class="keyword">const</span>;00535 00538 <span class="keyword">public</span>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -