📄 contain_8h-source.html
字号:
00454 00455 <a name="l00456"></a><a class="code" href="classPContainer_1_1Reference.html">00456</a> <span class="keyword">class </span><a class="code" href="classPContainer_1_1Reference.html">Reference</a> {00457 <span class="keyword">public</span>:<a name="l00458"></a><a class="code" href="classPContainer_1_1Reference.html#a0">00458</a> <span class="keyword">inline</span> <a class="code" href="classPContainer_1_1Reference.html#a0">Reference</a>(PINDEX initialSize)00459 : <a class="code" href="classPContainer_1_1Reference.html#m0">size</a>(initialSize), <a class="code" href="classPContainer_1_1Reference.html#m1">count</a>(1), <a class="code" href="classPContainer_1_1Reference.html#m2">deleteObjects</a>(TRUE) { }00460 <a name="l00461"></a><a class="code" href="classPContainer_1_1Reference.html#a1">00461</a> <a class="code" href="classPContainer_1_1Reference.html#a0">Reference</a>(<span class="keyword">const</span> <a class="code" href="classPContainer_1_1Reference.html">Reference</a> & ref)00462 : <a class="code" href="classPContainer_1_1Reference.html#m1">count</a>(1)00463 { 00464 <span class="preprocessor">#if PCONTAINER_USES_CRITSEC</span>00465 <span class="preprocessor"></span> <a class="code" href="classPEnterAndLeave.html">PEnterAndLeave</a> m(((<a class="code" href="classPContainer_1_1Reference.html">Reference</a> &)ref).critSec);00466 <span class="preprocessor">#endif</span>00467 <span class="preprocessor"></span> <a class="code" href="classPContainer_1_1Reference.html#m0">size</a> = ref.size; 00468 <a class="code" href="classPContainer_1_1Reference.html#m2">deleteObjects</a> = ref.deleteObjects; 00469 }00470 <a name="l00471"></a><a class="code" href="classPContainer_1_1Reference.html#m0">00471</a> PINDEX <a class="code" href="classPContainer_1_1Reference.html#m0">size</a>; <span class="comment">// Size of what the container contains</span><a name="l00472"></a><a class="code" href="classPContainer_1_1Reference.html#m1">00472</a> <a class="code" href="classPAtomicInteger.html">PAtomicInteger</a> <a class="code" href="classPContainer_1_1Reference.html#m1">count</a>; <span class="comment">// reference count to the container content - guaranteed to be atomic</span><a name="l00473"></a><a class="code" href="classPContainer_1_1Reference.html#m2">00473</a> BOOL <a class="code" href="classPContainer_1_1Reference.html#m2">deleteObjects</a>; <span class="comment">// Used by PCollection but put here for efficiency</span>00474 <span class="preprocessor">#if PCONTAINER_USES_CRITSEC</span>00475 <span class="preprocessor"></span> <a class="code" href="classPCriticalSection.html">PCriticalSection</a> critSec;00476 <span class="preprocessor">#endif</span>00477 <span class="preprocessor"></span> <span class="keyword">private</span>:00478 <a class="code" href="classPContainer_1_1Reference.html">Reference</a> & <a class="code" href="classPContainer.html#z67_2">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPContainer_1_1Reference.html">Reference</a> &) 00479 { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }00480 } * <a class="code" href="classPContainer.html#n0">reference</a>;00481 };00482 00483 00484 <a name="l00532"></a><a class="code" href="contain_8h.html#a0">00532</a> <span class="preprocessor">#define PCONTAINERINFO(cls, par) \</span>00533 <span class="preprocessor"> PCLASSINFO(cls, par) \</span>00534 <span class="preprocessor"> public: \</span>00535 <span class="preprocessor"> cls(const cls & c) : par(c) { CopyContents(c); } \</span>00536 <span class="preprocessor"> cls & operator=(const cls & c) \</span>00537 <span class="preprocessor"> { AssignContents(c); return *this; } \</span>00538 <span class="preprocessor"> virtual ~cls() { Destruct(); } \</span>00539 <span class="preprocessor"> virtual BOOL MakeUnique() \</span>00540 <span class="preprocessor"> { if(par::MakeUnique())return TRUE; CloneContents(this);return FALSE; } \</span>00541 <span class="preprocessor"> protected: \</span>00542 <span class="preprocessor"> cls(int dummy, const cls * c) : par(dummy, c) { CloneContents(c); } \</span>00543 <span class="preprocessor"> virtual void DestroyContents(); \</span>00544 <span class="preprocessor"> void CloneContents(const cls * c); \</span>00545 <span class="preprocessor"> void CopyContents(const cls & c); \</span>00546 <span class="preprocessor"> virtual void AssignContents(const PContainer & c) \</span>00547 <span class="preprocessor"> { par::AssignContents(c); CopyContents((const cls &)c); }</span>00548 <span class="preprocessor"></span>00549 00551 <span class="comment">// Abstract collection of objects class</span>00552 <a name="l00584"></a><a class="code" href="classPCollection.html">00584</a> <span class="keyword">class </span><a class="code" href="classPCollection.html">PCollection</a> : <span class="keyword">public</span> <a class="code" href="classPContainer.html">PContainer</a>00585 {00586 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPCollection.html">PCollection</a>, <a class="code" href="classPContainer.html">PContainer</a>);00587 00588 <span class="keyword">public</span>:00593 <a class="code" href="classPCollection.html#z71_0">PCollection</a>(00594 PINDEX initialSize = 0 00595 );00597 00613 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPCollection.html#z73_0">PrintOn</a>(00614 ostream &strm 00615 ) <span class="keyword">const</span>;00617 00629 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPCollection.html#z75_0">Append</a>(00630 <a class="code" href="classPObject.html">PObject</a> * obj 00631 ) = 0;00632 00649 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPCollection.html#z75_1">Insert</a>(00650 <span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> & before, 00651 <a class="code" href="classPObject.html">PObject</a> * obj 00652 ) = 0;00653 00665 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPCollection.html#z75_2">InsertAt</a>(00666 PINDEX index, 00667 <a class="code" href="classPObject.html">PObject</a> * obj 00668 ) = 0;00669 00679 <span class="keyword">virtual</span> BOOL <a class="code" href="classPCollection.html#z75_3">Remove</a>(00680 <span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> * obj 00681 ) = 0;00682 00691 <span class="keyword">virtual</span> <a class="code" href="classPObject.html">PObject</a> * <a class="code" href="classPCollection.html#z75_4">RemoveAt</a>(00692 PINDEX index 00693 ) = 0;00694 00701 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPCollection.html#z75_5">RemoveAll</a>();00702 00716 <span class="keyword">virtual</span> BOOL <a class="code" href="classPCollection.html#z75_6">SetAt</a>(00717 PINDEX index, 00718 <a class="code" href="classPObject.html">PObject</a> * val 00719 ) = 0;00720 00726 <span class="keyword">virtual</span> <a class="code" href="classPObject.html">PObject</a> * <a class="code" href="classPCollection.html#z75_7">GetAt</a>(00727 PINDEX index 00728 ) <span class="keyword">const</span> = 0;00729 00736 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPCollection.html#z75_8">GetObjectsIndex</a>(00737 <span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> * obj 00738 ) <span class="keyword">const</span> = 0;00739 00748 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPCollection.html#z75_9">GetValuesIndex</a>(00749 <span class="keyword">const</span> <a class="code" href="classPObject.html">PObject</a> & obj 00750 ) <span class="keyword">const</span> = 0;00751 00765 <a class="code" href="object_8h.html#a2">PINLINE</a> <span class="keywordtype">void</span> <a class="code" href="classPCollection.html#z75_10">AllowDeleteObjects</a>(00766 BOOL yes = TRUE 00767 );00768 00772 <span class="keywordtype">void</span> <a class="code" href="classPCollection.html#z75_11">DisallowDeleteObjects</a>();00774 00775 <span class="keyword">protected</span>:00786 <a class="code" href="object_8h.html#a2">PINLINE</a> <a class="code" href="classPCollection.html#z71_0">PCollection</a>(00787 <span class="keywordtype">int</span> dummy, 00788 <span class="keyword">const</span> <a class="code" href="classPCollection.html">PCollection</a> * coll 00789 );00790 };00791 00792 00793 00795 <span class="comment">// The abstract array class</span>00796 00797 <span class="preprocessor">#include <<a class="code" href="array_8h.html">ptlib/array.h</a>></span>00798 00800 <span class="comment">// The abstract array class</span>00801 00802 <span class="preprocessor">#include <<a class="code" href="lists_8h.html">ptlib/lists.h</a>></span>00803 00805 <span class="comment">// PString class (specialised version of PBASEARRAY(char))</span>00806 00807 <span class="preprocessor">#include <<a class="code" href="dict_8h.html">ptlib/dict.h</a>></span>00808 00809 00811 <span class="comment">// PString class</span>00812 00813 <span class="preprocessor">#include <<a class="code" href="pstring_8h.html">ptlib/pstring.h</a>></span>00814 00815 00816 00818 <span class="comment">// Fill in all the inline functions</span>00819 00820 <span class="preprocessor">#if P_USE_INLINES</span>00821 <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="contain_8inl.html">ptlib/contain.inl</a>></span>00822 <span class="preprocessor">#endif</span>00823 <span class="preprocessor"></span>00824 <span class="preprocessor">#endif // _CONTAIN_H</span>00825 <span class="preprocessor"></span>00826 00827 <span class="comment">// End Of File ///////////////////////////////////////////////////////////////</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:10 2004 for PWLib by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -