From: Matze B. <mat...@us...> - 2002-06-28 18:34:57
|
Update of /cvsroot/planeshift/gnl/include/util In directory usw-pr-cvs1:/tmp/cvs-serv16581/include/util Modified Files: gnlhash.h Added Files: queue.h queue.inc Removed Files: simpqueue.h simpqueue.inc Log Message: added support for removing clients --- NEW FILE: queue.h --- #ifndef __SIMQUEUE_H__ #define __SIMQUEUE_H__ namespace gnl { template <class T> class Queue { public: Queue (); ~Queue (); void Clear (); void Push (T* e); void PushFront (T* e); T* Pop (); protected: struct QueueNode { T* data; QueueNode* prev; QueueNode (T* e) : data(e), prev(NULL) { } }; QueueNode* begin; QueueNode* end; }; } // end of namespace gnl #include "util/queue.inc" #endif --- NEW FILE: queue.inc --- #ifndef __SIMPQUEUE_CPP__ #define __SIMPQUEUE_CPP__ #ifndef __SIMPQUEUE_H__ # include <config.h> # include "queue.h" #endif namespace gnl { template <class T> Queue<T>::Queue () : begin(NULL), end(NULL) { } template <class T> Queue<T>::~Queue () { Clear (); } template <class T> void Queue<T>::Clear () { QueueNode* node = end; while (node) { node->data->DecRef(); QueueNode* temp = node; node = node->prev; delete temp; } begin = end = NULL; } template <class T> void Queue<T>::Push (T* e) { QueueNode* node = new QueueNode(e); node->data->IncRef(); if (begin == NULL) { begin = end = node; } else { begin->prev = node; begin = node; } } template <class T> void Queue<T>::PushFront (T* e) { QueueNode* node = new QueueNode(e); node->data->IncRef(); if (end == NULL) { begin = end = node; } else { node->prev = end; end = node; } } template <class T> T* Queue<T>::Pop () { if (end == NULL) return NULL; QueueNode* node = end; end = end->prev; if (end == NULL) begin = NULL; T* data = node->data; delete node; return data; } } // end of namespace gnl #endif Index: gnlhash.h =================================================================== RCS file: /cvsroot/planeshift/gnl/include/util/gnlhash.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** gnlhash.h 16 Jun 2002 16:48:23 -0000 1.4 --- gnlhash.h 28 Jun 2002 18:34:54 -0000 1.5 *************** *** 82,86 **** } ! void Remove (const Key& key) { size_t index = key % hashsize; --- 82,87 ---- } ! template <class T2> ! void Remove (const Key& key, const T2& compare) { size_t index = key % hashsize; *************** *** 90,94 **** while (entry) { ! if (entry->key == key) { if (oldentry == 0) --- 91,95 ---- while (entry) { ! if (entry->key == key && entry->data == compare) { if (oldentry == 0) --- simpqueue.h DELETED --- --- simpqueue.inc DELETED --- |