Go to the documentation of this file.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 Msg& operator<<(long n) { os << n; return *this; }
00048 Msg& operator<<(unsigned long n) { os << n; return *this; }
00049 Msg& operator<<(bool n) { os << n; return *this; }
00050 Msg& operator<<(short n) { os << n; return *this; }
00051 Msg& operator<<(unsigned short n) { os << n; return *this; }
00052 Msg& operator<<(int n) { os << n; return *this; }
00053 Msg& operator<<(unsigned int n) { os << n; return *this; }
00054 #ifdef _GLIBCXX_USE_LONG_LONG
00055 Msg& operator<<(long long n) { os << n; return *this; }
00056 Msg& operator<<(unsigned long long n) { os << n; return *this; }
00057 #endif
00058 Msg& operator<<(double n) { os << n; return *this; }
00059 Msg& operator<<(float n) { os << n; return *this; }
00060 Msg& operator<<(long double n) { os << n; return *this; }
00061
00062 template <class T> Msg& operator<<(const T& t) { os <<t; return *this; }
00063 };
00064
00065
00066
00067 inline std::ostream& operator<<(std::ostream& o, const Msg& m) {
00068 return o << m.str();
00069 }
00070
00072 #define QUOTE_(x) #x
00073 #define QUOTE(x) QUOTE_(x)
00074 #define QPID_MSG(message) (::qpid::Msg() << message << " (" __FILE__ ":" QUOTE(__LINE__) ")")
00075
00076 }
00077
00078 #endif