00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _PRINTABLE_H_
00012 #define _PRINTABLE_H_
00013
00014 #include <ostream>
00015 #include "BaseNamespaceHeader.H"
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 class Printable
00032 {
00033 public:
00034 virtual ~Printable()
00035 {
00036 }
00037
00038 virtual void print(std::ostream& ) const = 0;
00039 };
00040
00041 inline std::ostream& operator<< (std::ostream& os, const Printable& p)
00042 {
00043 p.print(os);
00044 return os;
00045 }
00046
00047 #include "BaseNamespaceFooter.H"
00048 #endif