#ifndef __USE_HPP #define __USE_HPP class String; class istream; class ostream; class aUse { public: enum usetype { useNone, useInheritsCompatible, useInheritsNew, useInterface, useImplementation, useInstantiatesCompatible, useInstantiatesNew }; private: String *what; usetype use; usetype explicituse; public: aUse(const String& w,usetype ut,usetype e=useNone); aUse(const char* w,usetype ut,usetype e=useNone); aUse(istream& i); virtual ~aUse(); usetype getUse() const; usetype getExplicitUse() const; void changeUse(usetype u); void changeExplicitUse(usetype u); const String& whatUse() const; protected: virtual ostream& write(ostream& o) const; friend ostream& operator<<(ostream& o, const aUse& u); }; inline ostream& operator<<(ostream& o, const aUse& u) { return u.write(o); } #endif