
/*
**  This file forms part of the GOBLIN C++ Class Library.
**
**  Written by Christian Fremuth-Paeger, December 1998.
**  
**  Copying, compiling, distribution and modification
**  of this source code is permitted only in accordance
**  with the GOBLIN general licence information.
*/             


#if !defined(_ITERATOR_H_)

#define _ITERATOR_H_

#include <absobj.h>


class goblinIterator : public virtual goblinDataObject
{
public:

	virtual unsigned long	Size() throw() = 0;     

	virtual void	Reset() throw() = 0;
		// Initialize a graph search
	virtual void	Reset(TNode v) throw(ERRange) = 0;
		// Reinitialize a particular incidence list
	virtual TArc	Read(TNode v) throw(ERRange,ERRejected) = 0;
		// Read an arc from the incidence list of v and proceed
	virtual TArc	Peek(TNode v) throw(ERRange,ERRejected) = 0;
		// Read an arc from the incidence list of v, but do not proceed
	virtual void	Skip(TNode v) throw(ERRange,ERRejected) {Read(v);};
		// Skip an arc in the incidence list of v
	virtual bool	Active(TNode v) throw(ERRange) = 0;
		// Is there another arc incident with v?

};                           


#endif

