]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/list.h
Updated Changes file
[irc/gameservirc.git] / gameserv / list.h
index 944035dd531df4ccdb32a36a0064d14f62df9b4a..d19e5564614454726289ca9b41a7bd936816c83b 100644 (file)
@@ -6,9 +6,11 @@
 #include "listnode.h"
 #include "aClient.h"
 #include "extern.h"
+#include "options.h"
 
 using std::cout;
 using std::endl;
+using std::flush;
 
 template <class T>
 class List {
@@ -19,7 +21,8 @@ class List {
        void insertAtBack( T *&);
        bool removeFromFront( T & );
        bool removeFromBack( T & );
-       bool remove( T * );
+       bool del( T *);
+       ListNode < T > *remove( T * );
        bool isEmpty() const;
        void print() const;
        ListNode < T > *Find( T * );
@@ -189,12 +192,23 @@ void List<T>::print() const
        cout << endl;
        currentPtr = currentPtr->next;
     }
-
 }
 #endif
 
 template <class T>
-bool List<T>::remove(T *remPtr)
+bool List<T>::del(T *remPtr)
+{
+    ListNode<T> *removed = remove( remPtr );
+    if (removed != NULL)
+    {
+       delete removed;
+       return true;
+    }
+    return false;
+}
+
+template <class T>
+ListNode<T> *List<T>::remove(T *remPtr)
 {
     ListNode<T> *newPtr = firstPtr;
     T *testPtr;
@@ -213,8 +227,7 @@ bool List<T>::remove(T *remPtr)
                    log("One Element. Deleting it");
                #endif
                firstPtr = lastPtr = NULL;
-               delete newPtr;
-               return true;
+               return newPtr;
            }
            else if (newPtr != lastPtr && newPtr != firstPtr)
            {
@@ -223,8 +236,7 @@ bool List<T>::remove(T *remPtr)
                #endif
                newPtr->prev->next = newPtr->next;
                newPtr->next->prev = newPtr->prev;
-               delete newPtr;
-               return true;
+               return newPtr;
            }
            else if (newPtr == lastPtr)
            {
@@ -233,8 +245,7 @@ bool List<T>::remove(T *remPtr)
                #endif
                lastPtr = newPtr->prev;
                lastPtr->next = 0;
-               delete newPtr;
-               return true;
+               return newPtr;
            }
            else if (newPtr == firstPtr)
            {
@@ -243,12 +254,11 @@ bool List<T>::remove(T *remPtr)
                #endif
                firstPtr = newPtr->next;
                firstPtr->prev = 0;
-               delete newPtr;
-               return true;
+               return newPtr;
            }
        }
        newPtr = newPtr->next;
     }
-    return false;
+    return NULL;
 }
 #endif