📄 safecoll_8h-source.html
字号:
<a name="l00541"></a><a class="code" href="classPSafePtrBase.html#z331_0">00541</a> <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> <a class="code" href="classPSafePtrBase.html#z331_0">GetSafetyMode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPSafePtrBase.html#n2">lockMode</a>; }00542 00545 BOOL <a class="code" href="classPSafePtrBase.html#z331_1">SetSafetyMode</a>(00546 <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode 00547 );00549 00550 <span class="keyword">protected</span>:00551 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(<span class="keyword">const</span> <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a> & ptr);00552 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(<span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> & safeCollection);00553 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(<a class="code" href="classPSafeObject.html">PSafeObject</a> * obj);00554 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(PINDEX idx);00555 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b4">Next</a>();00556 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b5">Previous</a>();00557 <a name="l00558"></a><a class="code" href="classPSafePtrBase.html#t4">00558</a> <span class="keyword">enum</span> <a class="code" href="classPSafePtrBase.html#t4">EnterSafetyModeOption</a> {00559 <a class="code" href="classPSafePtrBase.html#t4t0">WithReference</a>,00560 <a class="code" href="classPSafePtrBase.html#t4t1">AlreadyReferenced</a>00561 };00562 BOOL <a class="code" href="classPSafePtrBase.html#b6">EnterSafetyMode</a>(<a class="code" href="classPSafePtrBase.html#t4">EnterSafetyModeOption</a> ref);00563 <a name="l00564"></a><a class="code" href="classPSafePtrBase.html#t5">00564</a> <span class="keyword">enum</span> <a class="code" href="classPSafePtrBase.html#t5">ExitSafetyModeOption</a> {00565 <a class="code" href="classPSafePtrBase.html#t5t2">WithDereference</a>,00566 <a class="code" href="classPSafePtrBase.html#t5t3">NoDereference</a>00567 };00568 <span class="keywordtype">void</span> <a class="code" href="classPSafePtrBase.html#b7">ExitSafetyMode</a>(<a class="code" href="classPSafePtrBase.html#t5">ExitSafetyModeOption</a> ref);00569 00570 <span class="keyword">protected</span>:<a name="l00571"></a><a class="code" href="classPSafePtrBase.html#n0">00571</a> <span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> * <a class="code" href="classPSafePtrBase.html#n0">collection</a>;<a name="l00572"></a><a class="code" href="classPSafePtrBase.html#n1">00572</a> <a class="code" href="classPSafeObject.html">PSafeObject</a> * <a class="code" href="classPSafePtrBase.html#n1">currentObject</a>;<a name="l00573"></a><a class="code" href="classPSafePtrBase.html#n2">00573</a> <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> <a class="code" href="classPSafePtrBase.html#n2">lockMode</a>;00574 };00575 00576 <a name="l00598"></a><a class="code" href="classPSafePtr.html">00598</a> <span class="keyword">template</span> <<span class="keyword">class</span> T> <span class="keyword">class </span><a class="code" href="classPSafePtr.html">PSafePtr</a> : <span class="keyword">public</span> <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>00599 {00600 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPSafePtr.html">PSafePtr</a>, <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>);00601 <span class="keyword">public</span>:<a name="l00611"></a><a class="code" href="classPSafePtr.html#z333_0">00611</a> <a class="code" href="classPSafePtr.html#z333_0">PSafePtr</a>(00612 T * obj = NULL, 00613 <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode = <a class="code" href="safecoll_8h.html#a4a0">PSafeReference</a> 00614 ) : <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>(obj, mode) { }00615 <a name="l00623"></a><a class="code" href="classPSafePtr.html#z333_1">00623</a> <a class="code" href="classPSafePtr.html#z333_0">PSafePtr</a>(00624 <span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> & safeCollection, 00625 <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode = <a class="code" href="safecoll_8h.html#a4a2">PSafeReadWrite</a>, 00626 PINDEX idx = 0 00627 ) : <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>(safeCollection, mode, idx) { }00628 <a name="l00636"></a><a class="code" href="classPSafePtr.html#z333_2">00636</a> <a class="code" href="classPSafePtr.html#z333_0">PSafePtr</a>(00637 <span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> & safeCollection, 00638 <a class="code" href="safecoll_8h.html#a4">PSafetyMode</a> mode, 00639 <a class="code" href="classPSafeObject.html">PSafeObject</a> * obj 00640 ) : <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>(safeCollection, mode, obj) { }00641 <a name="l00647"></a><a class="code" href="classPSafePtr.html#z333_3">00647</a> <a class="code" href="classPSafePtr.html#z333_0">PSafePtr</a>(00648 <span class="keyword">const</span> <a class="code" href="classPSafePtr.html">PSafePtr</a> & ptr 00649 ) : <a class="code" href="classPSafePtrBase.html">PSafePtrBase</a>(ptr) { }00650 <a name="l00656"></a><a class="code" href="classPSafePtr.html#z333_4">00656</a> <a class="code" href="classPSafePtr.html">PSafePtr</a> & <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPSafePtr.html">PSafePtr</a> & ptr)00657 {00658 <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(ptr);00659 <span class="keywordflow">return</span> *<span class="keyword">this</span>;00660 }00661 <a name="l00666"></a><a class="code" href="classPSafePtr.html#z333_5">00666</a> <a class="code" href="classPSafePtr.html">PSafePtr</a> & <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> & safeCollection)00667 {00668 <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(safeCollection);00669 <span class="keywordflow">return</span> *<span class="keyword">this</span>;00670 }00671 <a name="l00687"></a><a class="code" href="classPSafePtr.html#z333_6">00687</a> <a class="code" href="classPSafePtr.html">PSafePtr</a> & <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(T * obj)00688 {00689 <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(obj);00690 <span class="keywordflow">return</span> *<span class="keyword">this</span>;00691 }00692 <a name="l00702"></a><a class="code" href="classPSafePtr.html#z333_7">00702</a> <a class="code" href="classPSafePtr.html">PSafePtr</a> & <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(PINDEX idx)00703 {00704 <a class="code" href="classPSafePtrBase.html#b0">Assign</a>(idx);00705 <span class="keywordflow">return</span> *<span class="keyword">this</span>;00706 }00708 <a name="l00713"></a><a class="code" href="classPSafePtr.html#z335_0">00713</a> <a class="code" href="classPSafePtr.html#z335_0">operator T*</a>() <span class="keyword">const</span> { <span class="keywordflow">return</span> (T *)<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>; }00714 <a name="l00717"></a><a class="code" href="classPSafePtr.html#z335_1">00717</a> T & <a class="code" href="classPSafePtr.html#z335_1">operator*</a>() <span class="keyword">const</span> { <span class="keywordflow">return</span> *(T *)<a class="code" href="object_8h.html#a8">PAssertNULL</a>(<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>); }00718 <a name="l00721"></a><a class="code" href="classPSafePtr.html#z335_2">00721</a> T * <a class="code" href="classPSafePtr.html#z335_2">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (T *)<a class="code" href="object_8h.html#a8">PAssertNULL</a>(<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>); }00722 <a name="l00727"></a><a class="code" href="classPSafePtr.html#z335_3">00727</a> T * <a class="code" href="classPSafePtr.html#z335_4">operator++</a>(<span class="keywordtype">int</span>)00728 {00729 T * previous = (T *)<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>;00730 <a class="code" href="classPSafePtrBase.html#b4">Next</a>();00731 <span class="keywordflow">return</span> previous;00732 }00733 <a name="l00738"></a><a class="code" href="classPSafePtr.html#z335_4">00738</a> T * <a class="code" href="classPSafePtr.html#z335_4">operator++</a>()00739 {00740 <a class="code" href="classPSafePtrBase.html#b4">Next</a>();00741 <span class="keywordflow">return</span> (T *)<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>;00742 }00743 <a name="l00748"></a><a class="code" href="classPSafePtr.html#z335_5">00748</a> T * <a class="code" href="classPSafePtr.html#z335_6">operator--</a>(<span class="keywordtype">int</span>)00749 {00750 T * previous = (T *)<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>;00751 <a class="code" href="classPSafePtrBase.html#b5">Previous</a>();00752 <span class="keywordflow">return</span> previous;00753 }00754 <a name="l00759"></a><a class="code" href="classPSafePtr.html#z335_6">00759</a> T * <a class="code" href="classPSafePtr.html#z335_6">operator--</a>()00760 {00761 <a class="code" href="classPSafePtrBase.html#b5">Previous</a>();00762 <span class="keywordflow">return</span> (T *)<a class="code" href="classPSafePtrBase.html#n1">currentObject</a>;00763 }00765 };00766 00767 00768 <span class="keyword">template</span> <<span class="keyword">class</span> Base, <span class="keyword">class</span> Derived><a name="l00769"></a><a class="code" href="safecoll_8h.html#a3">00769</a> <a class="code" href="classPSafePtr.html">PSafePtr<Derived></a> <a class="code" href="safecoll_8h.html#a3">PSafePtrCast</a>(<span class="keyword">const</span> <a class="code" href="classPSafePtr.html">PSafePtr<Base></a> & oldPtr)00770 {00771 <a class="code" href="classPSafePtr.html">PSafePtr<Derived></a> newPtr;00772 Base * realPtr = oldPtr;00773 <span class="keywordflow">if</span> (realPtr != NULL && <a class="code" href="object_8h.html#a22">PIsDescendant</a>(realPtr, Derived)) {00774 newPtr = (Derived *)(Base *)oldPtr;00775 newPtr.<a class="code" href="classPSafePtrBase.html#z331_1">SetSafetyMode</a>(oldPtr.<a class="code" href="classPSafePtrBase.html#z331_0">GetSafetyMode</a>());00776 }00777 <span class="keywordflow">return</span> newPtr;00778 }00779 <a name="l00790"></a><a class="code" href="classPSafeColl.html">00790</a> <span class="keyword">template</span> <<span class="keyword">class</span> Coll, <span class="keyword">class</span> Base> <span class="keyword">class </span><a class="code" href="classPSafeColl.html">PSafeColl</a> : <span class="keyword">public</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -