#ifndef __CONTAINER_H
#define __CONTAINER_H

#ifndef false
	#define false 0
	#define true  1
#endif

template <class T>
class Container
{
	public:

		virtual T* first() = 0;		// Setzt AktContainerPosition auf das erste Element
									// und liefert den Zeiger darauf.
		virtual T* next() = 0;		// Erhoeht AktContainerPosition um eins.
									// und liefert den Zeiger darauf.
		virtual int isLast() = 0;	// Ist das Ende des Containers erreicht?
		virtual T* retrieve() = 0;
//		virtual int operator[] (int pos) = 0;
		virtual int setPos (int) = 0;
		virtual int getPos () = 0;
		virtual int isFirst() = 0;	// Ist der Anfang des Containers erreicht?
		virtual T* last() = 0;       // Setzt AktContainerPosition auf das letzte Element.
										// und liefert den Zeiger darauf.
		virtual T* previous() = 0;	// Erniedrigt AktContainerPostion um eins.
										// und liefert den Zeiger darauf.
		virtual int isEmpty() = 0;	// Ist der Container vielleicht leer?
		virtual T* insert(T* ) = 0;	// Fuegt neues Element vor der AktPos ein.
		virtual T* append(T* ) = 0;	// Haengt neues Element an den Container an.
		virtual T* remove() = 0; 	// Loescht den Akt. Element aus der Container
									// und liefert den Zeiger auf das Element.
		virtual void empty() = 0;	// Leert den Container.
		virtual	void emptyWithElementDelete() = 0; // Leert den Container und loesch die Elemente.
};





#endif //__CONTAINER_H
