Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# XFuPriorityList.h

Go to the documentation of this file.

    00001 /*! \file
    00002  * X-Forge Util <br>
    00003  * Copyright 2000-2003 Fathammer Ltd
    00004  *
    00005  * \brief Priority Linked list template
    00006  *
    00007  * $Id: XFuPriorityList.h,v 1.8 2003/08/12 13:33:52 lars Exp $
    00008  * $Date: 2003/08/12 13:33:52 $
    00009  * $Revision: 1.8 $
    00010  */
    00011
    00012 #ifndef XFUPRIORITYLIST_H_INCLUDED
    00013 #define XFUPRIORITYLIST_H_INCLUDED
    00014
    00015 #include <xfcore/XFcLinkedList.h>
    00016 #include <xfutil/XFuPriorityHelp.h>
    00017
    00018
    00019 template<class T>
    00020 class XFuPriorityList : public XFcLinkedList<T>
    00021 {
    00022 private:
    00023     XFuPriorityHelp *mPriorityHelp;
    00024
    00025 public:
    00026
    00027     //! Constructor.
    00028     XFuPriorityList(XFuPriorityHelp *aPriorityHelp);
    00029
    00030     //! Constructor.
    00031     XFuPriorityList();
    00032
    00033     //! Virtual destructor.
    00034     virtual ~XFuPriorityList();
    00035
    00036     //! Sets priority helper.
    00037     void setPriorityHelp(XFuPriorityHelp *aPriorityHelp);
    00038
    00039     //! Add first by priority.
    00040     INT addPriorityFirst(T aNewData);
    00041
    00042     //! Add last by priority.
    00043     INT addPriorityLast(T aNewData);
    00044
    00045     //! Decreases all priorities.
    00046     void decreasePriorities();
    00047
    00048     //! Increases priorities.
    00049     void increasePriorities();
    00050
    00051     //! Removes first.
    00052     INT removeFirst();
    00053
    00054     //! Remove last.
    00055     INT removeLast();
    00056 };
    00057
    00058
    00059 template<class T>
    00060 XFuPriorityList<T>::XFuPriorityList()
    00061 {
    00062 }
    00063
    00064
    00065 template<class T>
    00066 XFuPriorityList<T>::XFuPriorityList(
    00067     XFuPriorityHelp *aPriorityHelp) : mPriorityHelp(aPriorityHelp)
    00068 {
    00069 }
    00070
    00071
    00072 template<class T>
    00073 XFuPriorityList<T>::~XFuPriorityList()
    00074 {
    00075 }
    00076
    00077
    00078 template<class T>
    00079 void XFuPriorityList<T>::setPriorityHelp(XFuPriorityHelp *aPriorityHelp)
    00080 {
    00081     mPriorityHelp = aPriorityHelp;
    00082 }
    00083
    00084
    00085 template <class T>
    00086 INT XFuPriorityList<T>::addPriorityFirst(T aNewData)
    00087 {
    00088     INT i = 0;
    00089
    00090     XFcLinkedList<T>::forwardIterator it;
    00091     T temp;
    00092
    00093     for (it = forwardBegin(); it != forwardEnd(); it++)
    00094     {
    00095         temp = it.getValue();
    00096         // +1 is higher and -1 lower 0 is same
    00097         if (mPriorityHelp->priorityCheck(temp, aNewData) > 0)
    00098             break;
    00099         i ++;
    00100     }
    00101
    00102     return add(i, aNewData);
    00103 }
    00104
    00105
    00106 template <class T>
    00107 INT XFuPriorityList<T>::addPriorityLast(T aNewData)
    00108 {
    00109
    00110     INT i = 0;
    00111
    00112     XFcLinkedList<T>::forwardIterator it;
    00113     T temp;
    00114
    00115     for (it = forwardBegin(); it != forwardEnd(); it++)
    00116     {
    00117         temp = it.getData();
    00118         // +1 is higher and -1 lower 0 is same
    00119         if (mPriorityHelp->priorityCheck(temp, aNewData) < 0)
    00120             break;
    00121         i ++;
    00122     }
    00123
    00124     return add(i, aNewData);
    00125 }
    00126
    00127
    00128 template<class T>
    00129 void XFuPriorityList<T>::decreasePriorities()
    00130 {
    00131     XFcLinkedList<T>::forwardIterator it;
    00132     T temp;
    00133
    00134     for (it = forwardBegin(); it != forwardEnd(); it++)
    00135     {
    00136         temp = it.getData();
    00137         mPriorityHelp->decrease(temp);
    00138     }
    00139 }
    00140
    00141
    00142 template<class T>
    00143 void XFuPriorityList<T>::increasePriorities()
    00144 {
    00145     XFcLinkedList<T>::forwardIterator it;
    00146     T temp;
    00147
    00148     for (it = forwardBegin(); it != forwardEnd(); it++)
    00149     {
    00150         temp = it.getValue();
    00151         mPriorityHelp->increase(temp);
    00152     }
    00153 }
    00154
    00155
    00156 template<class T>
    00157 INT XFuPriorityList<T>::removeFirst()
    00158 {
    00159     return removeIndex(0);
    00160 }
    00161
    00162
    00163 template<class T>
    00164 INT XFuPriorityList<T>::removeLast()
    00165 {
    00166     return removeIndex(size());
    00167 }
    00168
    00169
    00170 #endif // !XFUPRIORITYLIST_H_INCLUDED
    00171

|  | X-Forge Documentation Confidential Copyright © 2002-2003 Fathammer |  | Documentation generated with doxygen by Dimitri van Heesch