00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _MSTREAMABLE_H_
00025 #define _MSTREAMABLE_H_ 1
00026
00027 #ifdef __GNUG__
00028 # pragma interface
00029 #endif
00030
00038 #include <iostream>
00039
00040 #include "cgicc/CgiDefs.h"
00041
00042 namespace cgicc {
00043
00044 class MStreamable;
00045
00052 CGICC_API std::ostream&
00053 operator<<(std::ostream& out, const MStreamable& obj);
00054
00055
00056
00057
00058
00066 class CGICC_API MStreamable
00067 {
00068
00069 friend CGICC_API std::ostream&
00070 operator<<(std::ostream& out, const MStreamable& obj);
00071
00072 public:
00077 inline MStreamable()
00078 {}
00079
00084 inline virtual ~MStreamable()
00085 {}
00086
00093 virtual void
00094 render(std::ostream& out) const = 0;
00095 };
00096
00097 }
00098
00099 #endif