make gcc-2.95 happy

This commit is contained in:
Olaf Rempel 2006-04-17 13:35:50 +02:00
parent 7811f0ab16
commit 68fea83c6f
2 changed files with 91 additions and 77 deletions

View File

@ -55,6 +55,8 @@ private:
List<GameEntry> buckets[MAX_BUCKETS]; List<GameEntry> buckets[MAX_BUCKETS];
int timeout; int timeout;
friend class GameList::GameListIterator;
}; };
#endif // _GAMELIST_H_ #endif // _GAMELIST_H_

62
list.h
View File

@ -35,8 +35,13 @@ template <class T>
class ListEntry; class ListEntry;
template <class T>
class ListIterator;
template <class T> template <class T>
class List { class List {
friend class ListIterator<T>;
public: public:
List() : head(0), tail(0) {} List() : head(0), tail(0) {}
~List() {} ~List() {}
@ -91,10 +96,16 @@ protected:
List(const List& l); List(const List& l);
List& operator=(const List& l); List& operator=(const List& l);
template <class TT> private:
class ListIterator : public Iterator<TT> { ListEntry<T> *head;
public: ListEntry<T> *tail;
ListIterator(List<TT>* list) };
template <class T>
class ListIterator : public Iterator<T> {
public:
ListIterator(List<T>* list)
: list(list) : list(list)
{ {
reset(); reset();
@ -107,11 +118,11 @@ protected:
return (pos == NULL) ? (list->head != NULL) : (pos->next != NULL); return (pos == NULL) ? (list->head != NULL) : (pos->next != NULL);
} }
virtual TT* next() virtual T* next()
{ {
prev = pos; prev = pos;
pos = (pos == NULL) ? list->head : pos->next; pos = (pos == NULL) ? list->head : pos->next;
return (TT*)pos; return (T*)pos;
} }
virtual void remove() virtual void remove()
@ -141,27 +152,22 @@ protected:
prev = NULL; prev = NULL;
} }
protected: protected:
ListIterator(const ListIterator& li); ListIterator(const ListIterator& li);
ListIterator& operator=(const ListIterator& li); ListIterator& operator=(const ListIterator& li);
List<TT>* list; List<T>* list;
private:
ListEntry<TT>* pos;
ListEntry<TT>* prev;
};
private: private:
ListEntry<T> *head; ListEntry<T>* pos;
ListEntry<T> *tail; ListEntry<T>* prev;
}; };
template <class T> template <class T>
class ListEntry { class ListEntry {
friend class List<T>; friend class List<T>;
friend class List<T>::ListIterator<T>; friend class ListIterator<T>;
public: public:
ListEntry() {} ListEntry() {}
~ListEntry() {} ~ListEntry() {}
@ -171,8 +177,13 @@ private:
}; };
template <class T>
class LockedListIterator;
template <class T> template <class T>
class LockedList : private List<T> { class LockedList : private List<T> {
friend class LockedListIterator<T>;
public: public:
LockedList() {} LockedList() {}
~LockedList() {} ~LockedList() {}
@ -210,22 +221,23 @@ public:
} }
private: private:
template <class TT> Mutex mutex;
class LockedListIterator : public List<TT>::ListIterator<TT> { };
public:
LockedListIterator(LockedList<TT>* list)
: List<TT>::ListIterator<TT>(list) template <class T>
class LockedListIterator : public ListIterator<T> {
public:
LockedListIterator(LockedList<T>* list)
: ListIterator<T>(list)
{ {
list->mutex.lock(); list->mutex.lock();
} }
virtual ~LockedListIterator() virtual ~LockedListIterator()
{ {
((LockedList<TT>*)list)->mutex.unlock(); ((LockedList<T>*)list)->mutex.unlock();
} }
};
Mutex mutex;
}; };
#endif //_LIST_H_ #endif //_LIST_H_