00001 #ifndef QPID_MSG_H
00002 #define QPID_MSG_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <sstream>
00026 #include <iostream>
00027
00028 namespace qpid {
00029
00040 struct Msg {
00041 std::ostringstream os;
00042 Msg() {}
00043 Msg(const Msg& m) : os(m.str()) {}
00044 std::string str() const { return os.str(); }
00045 operator std::string() const { return str(); }
00046 };
00047
00048 template <class T> const Msg& operator<<(const Msg& m, const T& t) {
00049 const_cast<std::ostringstream&>(m.os)<<t; return m;
00050 }
00051
00052 inline std::ostream& operator<<(std::ostream& o, const Msg& m) {
00053 return o<<m.str();
00054 }
00055
00057 #define QPID_MSG(message) ::qpid::Msg() << message << " (" << __FILE__ << ":" << __LINE__ << ")"
00058
00059 }
00060
00061 #endif