#ifndef __LSTCONTR_H
#define __LSTCONTR_H 1

#include <list.h>
#include <containr.h>


template <class T>
class ListContainer : public Container<T>
{

 public:
		virtual T* first()      // Setzt AktContainerPosition auf das erste Element
										// und liefert den Zeiger darauf.
		{
			return list.first();
		}

		virtual T* next()       // Erhoeht AktContainerPosition um eins.
										// und liefert den Zeiger darauf.
		{
			return list.next();
		}

		virtual int isLast()   // Ist das Ende des Containers erreicht?
		{
			return list.isLast();
		}

		virtual T* retrieve()
		{
			return list.retrieve();
		}

		virtual int setPos (int pos)
		{
			return list.setPos(pos);
		}

		virtual int getPos ()
		{
			return list.getPos();
		}

		virtual int isFirst()  // Ist der Anfang des Containers erreicht?
		{
			return list.isFirst();
		}

		virtual T* last()       // Setzt AktContainerPosition auf das letzte Element.
										// und liefert den Zeiger darauf.
		{
			return list.last();
		}


		virtual T* previous()   // Erniedrigt AktContainerPostion um eins.
										// und liefert den Zeiger darauf.
		{
			return list.previous();
		}


		virtual int isEmpty()  // Ist der Container vielleicht leer?
		{
			return list.isEmpty();
		}

		virtual T* insert(T* new_pointer)  // Fuegt neues Element vor der AktPos ein.
		{
			return list.insert(new_pointer);
		}

		virtual T* append(T* new_pointer)  // Haengt neues Element an den Container an.
		{
			return list.append(new_pointer);
		}

		virtual T* remove() 	// Loescht den Akt. Element aus der Container
									// und liefert den Zeiger auf das Element.
		{
			return list.remove();
		}

		virtual void empty() // Leert den Container.
		{
			list.empty();
		}

		virtual	void emptyWithElementDelete() // Leert den Container und loesch die Elemente.
		{
			list.emptyWithElementDelete();
		}

	private:
		ZeigerListe<T> list;
};


#endif // __LSTCONTR_H