📄 dict_8h-source.html
字号:
01101 };01102 01103 01116 <span class="preprocessor">#define PDICTIONARY(cls, K, D) typedef PDictionary<K, D> cls</span>01117 <span class="preprocessor"></span>01118 01131 <span class="preprocessor">#define PDECLARE_DICTIONARY(cls, K, D) \</span>01132 <span class="preprocessor"> PDICTIONARY(cls##_PTemplate, K, D); \</span>01133 <span class="preprocessor"> PDECLARE_CLASS(cls, cls##_PTemplate) \</span>01134 <span class="preprocessor"> protected: \</span>01135 <span class="preprocessor"> cls(int dummy, const cls * c) \</span>01136 <span class="preprocessor"> : cls##_PTemplate(dummy, c) { } \</span>01137 <span class="preprocessor"> public: \</span>01138 <span class="preprocessor"> cls() \</span>01139 <span class="preprocessor"> : cls##_PTemplate() { } \</span>01140 <span class="preprocessor"> virtual PObject * Clone() const \</span>01141 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01142 <span class="preprocessor"></span>01143 <span class="preprocessor"></span>01151 <span class="keyword">template</span> <<span class="keyword">class</span> K> <span class="keyword">class </span>POrdinalDictionary : <span class="keyword">public</span> <a class="code" href="classPAbstractDictionary.html">PAbstractDictionary</a>01152 {01153 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(POrdinalDictionary, <a class="code" href="classPAbstractDictionary.html">PAbstractDictionary</a>);01154 01155 <span class="keyword">public</span>:01164 POrdinalDictionary()01165 : <a class="code" href="classPAbstractDictionary.html">PAbstractDictionary</a>() { }01167 01174 <span class="keyword">virtual</span> <a class="code" href="classPObject.html">PObject</a> * <a class="code" href="classPObject.html#z203_0">Clone</a>()<span class="keyword"> const</span>01175 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="object_8h.html#a18">PNEW</a> POrdinalDictionary(0, <span class="keyword">this</span>); }01177 01190 PINDEX operator[](01191 <span class="keyword">const</span> K & key <span class="comment">// Key to look for in the dictionary.</span>01192 )<span class="keyword"> const</span>01193 <span class="keyword"> </span>{ <span class="keywordflow">return</span> (<a class="code" href="classPOrdinalKey.html">POrdinalKey</a> &)<a class="code" href="classPAbstractDictionary.html#z105_2">GetRefAt</a>(key); }01194 01203 BOOL Contains(01204 <span class="keyword">const</span> K & key 01205 )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classPHashTable.html#z93_0">AbstractContains</a>(key); }01206 01207 <span class="keyword">virtual</span> <a class="code" href="classPOrdinalKey.html">POrdinalKey</a> * <a class="code" href="classPAbstractDictionary.html#z103_4">GetAt</a>(01208 <span class="keyword">const</span> K & key 01209 )<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="classPOrdinalKey.html">POrdinalKey</a> *)<a class="code" href="classPAbstractDictionary.html#z105_3">AbstractGetAt</a>(key); }01210 <span class="comment">/* Get the object at the specified key position. If the key was not in the</span>01211 <span class="comment"> collection then NULL is returned.</span>01212 <span class="comment"></span>01213 <span class="comment"> @return</span>01214 <span class="comment"> pointer to object at the specified key.</span>01215 <span class="comment"> */</span>01216 01225 <span class="keyword">virtual</span> BOOL <a class="code" href="classPAbstractDictionary.html#z105_0">SetDataAt</a>(01226 PINDEX index, 01227 PINDEX ordinal 01228 ) { <span class="keywordflow">return</span> <a class="code" href="classPAbstractDictionary.html#z105_0">PAbstractDictionary::SetDataAt</a>(index, <a class="code" href="object_8h.html#a18">PNEW</a> <a class="code" href="classPOrdinalKey.html">POrdinalKey</a>(ordinal)); }01229 01241 <span class="keyword">virtual</span> BOOL <a class="code" href="classPAbstractDictionary.html#z103_3">SetAt</a>(01242 <span class="keyword">const</span> K & key, 01243 PINDEX ordinal 01244 ) { <span class="keywordflow">return</span> <a class="code" href="classPAbstractDictionary.html#z105_1">AbstractSetAt</a>(key, <a class="code" href="object_8h.html#a18">PNEW</a> <a class="code" href="classPOrdinalKey.html">POrdinalKey</a>(ordinal)); }01245 01254 <span class="keyword">virtual</span> PINDEX <a class="code" href="classPAbstractDictionary.html#z103_2">RemoveAt</a>(01255 <span class="keyword">const</span> K & key 01256 ) { PINDEX ord = *<a class="code" href="classPAbstractDictionary.html#z103_4">GetAt</a>(key); <a class="code" href="classPAbstractDictionary.html#z105_1">AbstractSetAt</a>(key, NULL); <span class="keywordflow">return</span> ord; }01257 01269 <span class="keyword">const</span> K & GetKeyAt(01270 PINDEX index 01271 )<span class="keyword"> const</span>01272 <span class="keyword"> </span>{ <span class="keywordflow">return</span> (<span class="keyword">const</span> K &)<a class="code" href="classPHashTable.html#z93_1">AbstractGetKeyAt</a>(index); }01273 01285 PINDEX GetDataAt(01286 PINDEX index 01287 )<span class="keyword"> const</span>01288 <span class="keyword"> </span>{ <span class="keywordflow">return</span> (<a class="code" href="classPOrdinalKey.html">POrdinalKey</a> &)<a class="code" href="classPHashTable.html#z93_2">AbstractGetDataAt</a>(index); }01290 01291 <span class="keyword">protected</span>:01292 POrdinalDictionary(<span class="keywordtype">int</span> dummy, <span class="keyword">const</span> POrdinalDictionary * c)01293 : <a class="code" href="classPAbstractDictionary.html">PAbstractDictionary</a>(dummy, c) { }01294 };01295 01296 01309 <span class="preprocessor">#define PORDINAL_DICTIONARY(cls, K) typedef POrdinalDictionary<K> cls</span>01310 <span class="preprocessor"></span>01311 01326 <span class="preprocessor">#define PDECLARE_ORDINAL_DICTIONARY(cls, K) \</span>01327 <span class="preprocessor"> PORDINAL_DICTIONARY(cls##_PTemplate, K); \</span>01328 <span class="preprocessor"> PDECLARE_CLASS(cls, POrdinalDictionary<K>) \</span>01329 <span class="preprocessor"> protected: \</span>01330 <span class="preprocessor"> cls(int dummy, const cls * c) \</span>01331 <span class="preprocessor"> : cls##_PTemplate(dummy, c) { } \</span>01332 <span class="preprocessor"> public: \</span>01333 <span class="preprocessor"> cls() \</span>01334 <span class="preprocessor"> : cls##_PTemplate() { } \</span>01335 <span class="preprocessor"> virtual PObject * Clone() const \</span>01336 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01337 <span class="preprocessor"></span>01338 <span class="preprocessor"></span>01339 <span class="preprocessor">#else // PHAS_TEMPLATES</span>01340 <span class="preprocessor"></span>01341 <a name="l01342"></a><a class="code" href="dict_8h.html#a2">01342</a> <span class="preprocessor">#define PDICTIONARY(cls, K, D) \</span>01343 <span class="preprocessor"> class cls : public PAbstractDictionary { \</span>01344 <span class="preprocessor"> PCLASSINFO(cls, PAbstractDictionary); \</span>01345 <span class="preprocessor"> protected: \</span>01346 <span class="preprocessor"> inline cls(int dummy, const cls * c) \</span>01347 <span class="preprocessor"> : PAbstractDictionary(dummy, c) { } \</span>01348 <span class="preprocessor"> public: \</span>01349 <span class="preprocessor"> cls() \</span>01350 <span class="preprocessor"> : PAbstractDictionary() { } \</span>01351 <span class="preprocessor"> virtual PObject * Clone() const \</span>01352 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01353 <span class="preprocessor"> D & operator[](const K & key) const \</span>01354 <span class="preprocessor"> { return (D &)GetRefAt(key); } \</span>01355 <span class="preprocessor"> virtual BOOL Contains(const K & key) const \</span>01356 <span class="preprocessor"> { return AbstractContains(key); } \</span>01357 <span class="preprocessor"> virtual D * RemoveAt(const K & key) \</span>01358 <span class="preprocessor"> { D * obj = GetAt(key); AbstractSetAt(key, NULL); return obj; } \</span>01359 <span class="preprocessor"> virtual BOOL SetAt(const K & key, D * obj) \</span>01360 <span class="preprocessor"> { return AbstractSetAt(key, obj); } \</span>01361 <span class="preprocessor"> virtual D * GetAt(const K & key) const \</span>01362 <span class="preprocessor"> { return (D *)AbstractGetAt(key); } \</span>01363 <span class="preprocessor"> const K & GetKeyAt(PINDEX index) const \</span>01364 <span class="preprocessor"> { return (const K &)AbstractGetKeyAt(index); } \</span>01365 <span class="preprocessor"> D & GetDataAt(PINDEX index) const \</span>01366 <span class="preprocessor"> { return (D &)AbstractGetDataAt(index); } \</span>01367 <span class="preprocessor"> }</span>01368 <span class="preprocessor"></span><a name="l01369"></a><a class="code" href="dict_8h.html#a3">01369</a> <span class="preprocessor">#define PDECLARE_DICTIONARY(cls, K, D) \</span>01370 <span class="preprocessor"> PDICTIONARY(cls##_PTemplate, K, D); \</span>01371 <span class="preprocessor"> PDECLARE_CLASS(cls, cls##_PTemplate) \</span>01372 <span class="preprocessor"> protected: \</span>01373 <span class="preprocessor"> cls(int dummy, const cls * c) \</span>01374 <span class="preprocessor"> : cls##_PTemplate(dummy, c) { } \</span>01375 <span class="preprocessor"> public: \</span>01376 <span class="preprocessor"> cls() \</span>01377 <span class="preprocessor"> : cls##_PTemplate() { } \</span>01378 <span class="preprocessor"> virtual PObject * Clone() const \</span>01379 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01380 <span class="preprocessor"></span>01381 <span class="preprocessor"></span><a name="l01382"></a><a class="code" href="dict_8h.html#a4">01382</a> <span class="preprocessor">#define PORDINAL_DICTIONARY(cls, K) \</span>01383 <span class="preprocessor"> class cls : public PAbstractDictionary { \</span>01384 <span class="preprocessor"> PCLASSINFO(cls, PAbstractDictionary); \</span>01385 <span class="preprocessor"> protected: \</span>01386 <span class="preprocessor"> inline cls(int dummy, const cls * c) \</span>01387 <span class="preprocessor"> : PAbstractDictionary(dummy, c) { } \</span>01388 <span class="preprocessor"> public: \</span>01389 <span class="preprocessor"> inline cls() \</span>01390 <span class="preprocessor"> : PAbstractDictionary() { } \</span>01391 <span class="preprocessor"> virtual PObject * Clone() const \</span>01392 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01393 <span class="preprocessor"> inline PINDEX operator[](const K & key) const \</span>01394 <span class="preprocessor"> { return (POrdinalKey &)GetRefAt(key); } \</span>01395 <span class="preprocessor"> virtual BOOL Contains(const K & key) const \</span>01396 <span class="preprocessor"> { return AbstractContains(key); } \</span>01397 <span class="preprocessor"> virtual POrdinalKey * GetAt(const K & key) const \</span>01398 <span class="preprocessor"> { return (POrdinalKey *)AbstractGetAt(key); } \</span>01399 <span class="preprocessor"> virtual BOOL SetDataAt(PINDEX index, PINDEX ordinal) \</span>01400 <span class="preprocessor"> { return PAbstractDictionary::SetDataAt(index, PNEW POrdinalKey(ordinal)); } \</span>01401 <span class="preprocessor"> virtual BOOL SetAt(const K & key, PINDEX ordinal) \</span>01402 <span class="preprocessor"> { return AbstractSetAt(key, PNEW POrdinalKey(ordinal)); } \</span>01403 <span class="preprocessor"> virtual PINDEX RemoveAt(const K & key) \</span>01404 <span class="preprocessor"> { PINDEX ord = *GetAt(key); AbstractSetAt(key, NULL); return ord; } \</span>01405 <span class="preprocessor"> inline const K & GetKeyAt(PINDEX index) const \</span>01406 <span class="preprocessor"> { return (const K &)AbstractGetKeyAt(index); } \</span>01407 <span class="preprocessor"> inline PINDEX GetDataAt(PINDEX index) const \</span>01408 <span class="preprocessor"> { return (POrdinalKey &)AbstractGetDataAt(index); } \</span>01409 <span class="preprocessor"> }</span>01410 <span class="preprocessor"></span><a name="l01411"></a><a class="code" href="dict_8h.html#a5">01411</a> <span class="preprocessor">#define PDECLARE_ORDINAL_DICTIONARY(cls, K) \</span>01412 <span class="preprocessor"> PORDINAL_DICTIONARY(cls##_PTemplate, K); \</span>01413 <span class="preprocessor"> PDECLARE_CLASS(cls, cls##_PTemplate) \</span>01414 <span class="preprocessor"> protected: \</span>01415 <span class="preprocessor"> cls(int dummy, const cls * c) \</span>01416 <span class="preprocessor"> : cls##_PTemplate(dummy, c) { } \</span>01417 <span class="preprocessor"> public: \</span>01418 <span class="preprocessor"> cls() \</span>01419 <span class="preprocessor"> : cls##_PTemplate() { } \</span>01420 <span class="preprocessor"> virtual PObject * Clone() const \</span>01421 <span class="preprocessor"> { return PNEW cls(0, this); } \</span>01422 <span class="preprocessor"></span>01423 <span class="preprocessor"></span>01424 <span class="preprocessor">#endif // PHAS_TEMPLATES</span>01425 <span class="preprocessor"></span>01426 <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 + -