#ifndef __LIST_HPP #define __LIST_HPP template class Chain { struct entry { T *t; entry *prev,*next; }; entry *first; unsigned count; public: Chain(); virtual ~Chain(); int insert(T *t); T *queryFirst(); T *queryPrevious(T *t); T *queryNext(T *t); void remove(T *t); unsigned queryCount() const { return count; } int empty() const { return count==0; } }; #include "chain.cpp" #endif