00001 #ifndef VIRTSTREAM_H 00002 #define VIRTSTREAM_H 00003 00004 #ifdef _DEBUG 00005 #include <abuse/abuse.h> 00006 #endif 00007 00008 class VirtStream 00009 { 00010 protected: 00011 typedef VirtStream&(*end)(VirtStream&); 00012 public: 00013 virtual VirtStream& operator<<(end e)=0; 00014 virtual VirtStream& operator<<(const char* c)=0; 00015 virtual VirtStream& operator<<(const std::string& s)=0; 00016 virtual VirtStream& operator<<(int n)=0; 00017 virtual VirtStream& operator<<(double n)=0; 00018 virtual VirtStream& operator<<(char c)=0; 00019 virtual VirtStream* clone()=0; 00020 virtual VirtStream& endl()=0; 00021 }; 00022 00023 __inline VirtStream& endl(VirtStream& stream) 00024 { 00025 return stream.endl(); 00026 } 00027 #endif