#include "simplelist.h" template SimpleList::SimpleList() :m_list(0) ,m_current(0) ,m_last(0) ,m_size(0) {}; template SimpleList::~SimpleList() { clear(); }; template void SimpleList::append(const T& text) { if (m_list==0) { m_list=new TemplNode(text); m_last=m_list; } else { m_last->m_next=new TemplNode(text); m_last=m_last->m_next; }; m_size++; }; template void SimpleList::removeFirst() { if (m_list==0) return; TemplNode *first=m_list; m_list=m_list->m_next; m_size--; if (m_list==0) m_last=0; m_current=0; delete first; }; template void SimpleList::clear() { while (m_list!=0) removeFirst(); m_current=0; m_last=0; m_list=0; m_size=0; }; template void SimpleList::remove(T* item) { if (item==0) return; TemplNode* pre(0); for (T* tmp=first(); tmp!=0; tmp=next()) { if (tmp==item) { if (m_current==m_list) { removeFirst(); return; } else { TemplNode *succ=m_current->m_next; if (m_current==m_last) m_last=pre; delete m_current; pre->m_next=succ; m_size--; m_current=0; }; }; pre=m_current; }; }; template T* SimpleList::first() { m_current=m_list; if (m_list==0) return 0; return &m_current->m_item; }; template T* SimpleList::next() { if (m_current==0) return 0; m_current=m_current->m_next; if (m_current==0) return 0; return &m_current->m_item; }; template int SimpleList::size() { return m_size; }