chxavlist.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 126 行

H
126
字号
/************************************************************************
 * chxavlist.h
 * -----------
 *
 * Synopsis:
 * Template version of the Helix simple list.
 * 
 * Target:
 * Symbian OS
 *
 *
 * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
 *
 ************************************************************************/
#ifndef _chxavlist_h_
#define _chxavlist_h_

#include "hxslist.h"

template<class T>
class CHXAvList
{
public:
    CHXAvList();
    ~CHXAvList();

    int GetCount() const;
    bool IsEmpty() const;
    
    void AddHead(const T& value);
    void AddTail(const T& value);

    void RemoveHead();
    void RemoveTail();
    void RemoveAll();

    bool Find(const T& value);

private:
    CHXSimpleList m_rep;
};

template<class T>
inline
CHXAvList<T>::CHXAvList()
{}

template<class T>
inline
CHXAvList<T>::~CHXAvList()
{
    RemoveAll();
}

template<class T>
inline
int CHXAvList<T>::GetCount() const
{
    return m_rep.GetCount();
}

template<class T>
inline
bool CHXAvList<T>::IsEmpty() const
{
    return m_rep.IsEmpty();
}

template<class T>
inline
void CHXAvList<T>::AddHead(const T& value)
{
    m_rep.AddHead(new T(value));
}

template<class T>
inline
void CHXAvList<T>::AddTail(const T& value)
{
    m_rep.AddTail(new T(value));
}

template<class T>
inline
void CHXAvList<T>::RemoveHead()
{
    delete (T*)m_rep.RemoveHead();
}

template<class T>
inline
void CHXAvList<T>::RemoveTail()
{
    delete (T*)m_rep.RemoveTail();
}

template<class T>
inline
void CHXAvList<T>::RemoveAll()
{
    LISTPOSITION pos = m_rep.GetHeadPosition();

    while(pos)
	delete (T*)m_rep.GetNext(pos);;

    m_rep.RemoveAll();
}

template<class T>
inline
bool CHXAvList<T>::Find(const T& value)
{
    bool ret = false;

    LISTPOSITION pos = m_rep.GetHeadPosition();

    while(!ret && pos)
    {
	if (*((T*)m_rep.GetNext(pos)) == value)
	    ret = true;
    }
    
    return ret;
}
#endif // _chxavlist_h_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?