/////////////////////////////////////////////////////////////////////////
//                                                                     //
// This file contains the declaration of ILexerStream class.           //
//                                                                     //
/////////////////////////////////////////////////////////////////////////
#ifndef __ILEXERSTREAM_HPP__
#define __ILEXERSTREAM_HPP__


/////////////////////////////////////////////////////////////////////////
//                                                                     //
// This class is the interface that must be implemented by a stream    //
// class in order to be usable by the lexer class.                     //
//                                                                     //
/////////////////////////////////////////////////////////////////////////
class ILexerStream
{
public:
  // Destructor
  virtual ~ILexerStream();

  // This function returns the next character in the stream
  virtual char get() = 0;

  // This function puts a character back at the beginning of the
  // stream
  virtual void put(char c) = 0;

  // This function returns true if the stream is done
  virtual bool finished() = 0;
};




// Destructor definition
inline ILexerStream::~ILexerStream()
{
}


#endif // __ILEXERSTREAM_HPP__
