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