while (*name)
{
- h = (h << 4) + tolower(*name++);
+ #ifdef P10
+ h = (h << 4) + (*name++); // Case sensitive for numerics
+ #else
+ h = (h << 4) + tolower(*name++);
+ #endif
if ((g = (h & 0xF0000000)))
h ^= g >> 24;
h &= ~g;
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 * );
#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;
log("One Element. Deleting it");
#endif
firstPtr = lastPtr = NULL;
- delete newPtr;
- return true;
+ return newPtr;
}
else if (newPtr != lastPtr && newPtr != firstPtr)
{
#endif
newPtr->prev->next = newPtr->next;
newPtr->next->prev = newPtr->prev;
- delete newPtr;
- return true;
+ return newPtr;
}
else if (newPtr == lastPtr)
{
#endif
lastPtr = newPtr->prev;
lastPtr->next = 0;
- delete newPtr;
- return true;
+ return newPtr;
}
else if (newPtr == firstPtr)
{
#endif
firstPtr = newPtr->next;
firstPtr->prev = 0;
- delete newPtr;
- return true;
+ return newPtr;
}
}
newPtr = newPtr->next;
}
- return false;
+ return NULL;
}
#endif
if ((tempPtr = find((source + 1))))
{
char *nick;
+ unsigned long oldhv, newhv;
nick = strtok(NULL, " ");
+ oldhv = HASH((unsigned char *) tempPtr->getNick(),
+ U_TABLE_SIZE);
+ newhv = HASH((unsigned char *) nick, U_TABLE_SIZE);
tempPtr->setNick(nick);
+ clients[oldhv].remove(tempPtr);
+ clients[newhv].insertAtBack(tempPtr);
}
}
else