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

📄 dict_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 4 页
字号:
01101 };01102 01103 01116 <span class="preprocessor">#define PDICTIONARY(cls, K, D) typedef PDictionary&lt;K, D&gt; 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> &lt;<span class="keyword">class</span> K&gt; <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 &amp; 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> &amp;)<a class="code" href="classPAbstractDictionary.html#z105_2">GetRefAt</a>(key); }01194 01203     BOOL Contains(01204       <span class="keyword">const</span> K &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp;)<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> &amp;)<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&lt;K&gt; 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&lt;K&gt;) \</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 &amp; operator[](const K &amp; key) const \</span>01354 <span class="preprocessor">      { return (D &amp;)GetRefAt(key); } \</span>01355 <span class="preprocessor">    virtual BOOL Contains(const K &amp; key) const \</span>01356 <span class="preprocessor">      { return AbstractContains(key); } \</span>01357 <span class="preprocessor">    virtual D * RemoveAt(const K &amp; 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 &amp; key, D * obj) \</span>01360 <span class="preprocessor">      { return AbstractSetAt(key, obj); } \</span>01361 <span class="preprocessor">    virtual D * GetAt(const K &amp; key) const \</span>01362 <span class="preprocessor">      { return (D *)AbstractGetAt(key); } \</span>01363 <span class="preprocessor">    const K &amp; GetKeyAt(PINDEX index) const \</span>01364 <span class="preprocessor">      { return (const K &amp;)AbstractGetKeyAt(index); } \</span>01365 <span class="preprocessor">    D &amp; GetDataAt(PINDEX index) const \</span>01366 <span class="preprocessor">      { return (D &amp;)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 &amp; key) const \</span>01394 <span class="preprocessor">      { return (POrdinalKey &amp;)GetRefAt(key); } \</span>01395 <span class="preprocessor">    virtual BOOL Contains(const K &amp; key) const \</span>01396 <span class="preprocessor">      { return AbstractContains(key); } \</span>01397 <span class="preprocessor">    virtual POrdinalKey * GetAt(const K &amp; 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 &amp; key, PINDEX ordinal) \</span>01402 <span class="preprocessor">      { return AbstractSetAt(key, PNEW POrdinalKey(ordinal)); } \</span>01403 <span class="preprocessor">    virtual PINDEX RemoveAt(const K &amp; key) \</span>01404 <span class="preprocessor">      { PINDEX ord = *GetAt(key); AbstractSetAt(key, NULL); return ord; } \</span>01405 <span class="preprocessor">    inline const K &amp; GetKeyAt(PINDEX index) const \</span>01406 <span class="preprocessor">      { return (const K &amp;)AbstractGetKeyAt(index); } \</span>01407 <span class="preprocessor">    inline PINDEX GetDataAt(PINDEX index) const \</span>01408 <span class="preprocessor">      { return (POrdinalKey &amp;)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 + -