#ifndef __DOC_HPP #define __DOC_HPP class istream; class ostream; /* someDocumentation represents a piece of documentation. It is meant * to be subclassed. This implementation is always empty */ class someDocumentation { public: someDocumentation(); virtual ~someDocumentation() {}; static someDocumentation *readIn(istream& is); protected: someDocumentation(istream& is); virtual ostream& write(ostream& os) const; friend ostream& operator<<(ostream& os, const someDocumentation& d); }; inline ostream& operator<<(ostream& os, const someDocumentation& d) { return d.write(os); } #endif