chxavlist.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:2k
源码类别:

Symbian

开发平台:

Visual C++

  1. /************************************************************************
  2.  * chxavlist.h
  3.  * -----------
  4.  *
  5.  * Synopsis:
  6.  * Template version of the Helix simple list.
  7.  * 
  8.  * Target:
  9.  * Symbian OS
  10.  *
  11.  *
  12.  * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
  13.  *
  14.  ************************************************************************/
  15. #ifndef _chxavlist_h_
  16. #define _chxavlist_h_
  17. #include "hxslist.h"
  18. template<class T>
  19. class CHXAvList
  20. {
  21. public:
  22.     CHXAvList();
  23.     ~CHXAvList();
  24.     int GetCount() const;
  25.     bool IsEmpty() const;
  26.     
  27.     void AddHead(const T& value);
  28.     void AddTail(const T& value);
  29.     void RemoveHead();
  30.     void RemoveTail();
  31.     void RemoveAll();
  32.     bool Find(const T& value);
  33. private:
  34.     CHXSimpleList m_rep;
  35. };
  36. template<class T>
  37. inline
  38. CHXAvList<T>::CHXAvList()
  39. {}
  40. template<class T>
  41. inline
  42. CHXAvList<T>::~CHXAvList()
  43. {
  44.     RemoveAll();
  45. }
  46. template<class T>
  47. inline
  48. int CHXAvList<T>::GetCount() const
  49. {
  50.     return m_rep.GetCount();
  51. }
  52. template<class T>
  53. inline
  54. bool CHXAvList<T>::IsEmpty() const
  55. {
  56.     return m_rep.IsEmpty();
  57. }
  58. template<class T>
  59. inline
  60. void CHXAvList<T>::AddHead(const T& value)
  61. {
  62.     m_rep.AddHead(new T(value));
  63. }
  64. template<class T>
  65. inline
  66. void CHXAvList<T>::AddTail(const T& value)
  67. {
  68.     m_rep.AddTail(new T(value));
  69. }
  70. template<class T>
  71. inline
  72. void CHXAvList<T>::RemoveHead()
  73. {
  74.     delete (T*)m_rep.RemoveHead();
  75. }
  76. template<class T>
  77. inline
  78. void CHXAvList<T>::RemoveTail()
  79. {
  80.     delete (T*)m_rep.RemoveTail();
  81. }
  82. template<class T>
  83. inline
  84. void CHXAvList<T>::RemoveAll()
  85. {
  86.     LISTPOSITION pos = m_rep.GetHeadPosition();
  87.     while(pos)
  88. delete (T*)m_rep.GetNext(pos);;
  89.     m_rep.RemoveAll();
  90. }
  91. template<class T>
  92. inline
  93. bool CHXAvList<T>::Find(const T& value)
  94. {
  95.     bool ret = false;
  96.     LISTPOSITION pos = m_rep.GetHeadPosition();
  97.     while(!ret && pos)
  98.     {
  99. if (*((T*)m_rep.GetNext(pos)) == value)
  100.     ret = true;
  101.     }
  102.     
  103.     return ret;
  104. }
  105. #endif // _chxavlist_h_