// -*- c++ -*-

# ifndef Serializable_h
# define Serializable_h
# include <iosfwd>

namespace utility
{
  
  class Serializable
  {
  public:
    virtual ~Serializable();
    virtual void write( std::ostream& ) const = 0;
    virtual void read( std::istream& ) = 0;
  };
  
  std::ostream&
  operator<<( std::ostream& out, 
	      const utility::Serializable& x );
  
  std::istream& 
  operator>>( std::istream& in,
	      utility::Serializable& x );
}; // namespace utility

# endif // Serializable_h
