00001
00010 #ifndef _BOARD_TOOLS_H_
00011 #define _BOARD_TOOLS_H_
00012
00013 #include <iostream>
00014
00015 namespace LibBoard {
00016
00021 class MessageStream {
00022 public:
00023
00024 inline MessageStream( std::ostream & out, const char * prefix );
00025
00026 template<typename T> inline MessageStream operator<<( const T & v );
00027
00028 private:
00029 std::ostream & _out;
00030 const char * _prefix;
00031 };
00032
00033 extern MessageStream error;
00034 extern MessageStream warning;
00035 extern MessageStream notice;
00036
00037 MessageStream::MessageStream( std::ostream & out, const char * prefix )
00038 : _out( out ),
00039 _prefix( prefix )
00040 {
00041 }
00042
00043 template<typename T>
00044 MessageStream MessageStream::operator<<( const T & v )
00045 {
00046 if ( _prefix )
00047 _out << _prefix << v;
00048 else
00049 _out << v;
00050 return MessageStream( _out, 0 );
00051 }
00052 }
00053
00054 #endif
00055