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

📄 safecoll_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<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> &amp; 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> &amp; 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> &lt;<span class="keyword">class</span> T&gt; <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> &amp; 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> &amp; 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> &amp; 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> &amp; <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPSafePtr.html">PSafePtr</a> &amp; 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> &amp; <a class="code" href="classPSafePtr.html#z333_4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPSafeCollection.html">PSafeCollection</a> &amp; 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> &amp; <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> &amp; <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 &amp; <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-&gt;</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> &lt;<span class="keyword">class</span> Base, <span class="keyword">class</span> Derived&gt;<a name="l00769"></a><a class="code" href="safecoll_8h.html#a3">00769</a> <a class="code" href="classPSafePtr.html">PSafePtr&lt;Derived&gt;</a> <a class="code" href="safecoll_8h.html#a3">PSafePtrCast</a>(<span class="keyword">const</span> <a class="code" href="classPSafePtr.html">PSafePtr&lt;Base&gt;</a> &amp; oldPtr)00770 {00771   <a class="code" href="classPSafePtr.html">PSafePtr&lt;Derived&gt;</a> newPtr;00772   Base * realPtr = oldPtr;00773   <span class="keywordflow">if</span> (realPtr != NULL &amp;&amp; <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> &lt;<span class="keyword">class</span> Coll, <span class="keyword">class</span> Base&gt; <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 + -