00001 #ifndef IOF_TOSTR_H
00002 #define IOF_TOSTR_H
00003
00016 #include "iof/prints.hpp"
00017
00018 namespace iof
00019 {
00020
00021 #define GET_STR_FROM_PRINT(printsFmtObj) \
00022 std::ostringstream out; \
00023 printsFmtObj; \
00024 return out.str();
00025
00026
00028 inline
00029 std::string tostr(const char* msg)
00030 {
00031 return msg;
00032 }
00033
00034
00036 inline
00037 std::string tostr(const std::string& msg)
00038 {
00039 return msg;
00040 }
00041
00042
00044 template <typename TT>
00045 inline
00046 std::string tostr(const TT& msg)
00047 {
00048 GET_STR_FROM_PRINT( prints(out, msg) );
00049 }
00050
00051
00052 template <typename T1>
00053 inline
00054 std::string tostr(const char* fmt, const T1& obj)
00055 {
00056 GET_STR_FROM_PRINT( prints(out, fmt, obj) );
00057 }
00058
00059
00060 template <typename T1, typename T2>
00061 inline
00062 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2)
00063 {
00064 GET_STR_FROM_PRINT( prints(out, fmt, obj1, obj2) );
00065 }
00066
00067
00068 template <typename T1, typename T2, typename T3>
00069 inline
00070 std::string tostr(const char* fmt,
00071 const T1& obj1, const T2& obj2, const T3& obj3)
00072 {
00073 GET_STR_FROM_PRINT( prints(out, fmt, obj1, obj2, obj3) );
00074 }
00075
00076
00077 template <typename T1, typename T2, typename T3, typename T4>
00078 inline
00079 std::string tostr(const char* fmt,
00080 const T1& obj1, const T2& obj2, const T3& obj3, const T4& obj4)
00081 {
00082 GET_STR_FROM_PRINT( prints(out, fmt, obj1, obj2, obj3, obj4) );
00083 }
00084
00085
00086 template <typename T1, typename T2, typename T3, typename T4, typename T5>
00087 inline
00088 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00089 const T3& obj3, const T4& obj4, const T5& obj5)
00090 {
00091 GET_STR_FROM_PRINT( prints(out, fmt, obj1, obj2, obj3, obj4, obj5) );
00092 }
00093
00094
00095 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00096 typename T6>
00097 inline
00098 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00099 const T3& obj3, const T4& obj4, const T5& obj5, const T6& obj6)
00100 {
00101 GET_STR_FROM_PRINT(
00102 prints(out, fmt, obj1, obj2, obj3, obj4, obj5, obj6) );
00103 }
00104
00105
00106 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00107 typename T6, typename T7>
00108 inline
00109 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00110 const T3& obj3, const T4& obj4, const T5& obj5, const T6& obj6, const T7& obj7)
00111 {
00112 GET_STR_FROM_PRINT(
00113 prints(out, fmt, obj1, obj2, obj3, obj4, obj5, obj6, obj7) );
00114 }
00115
00116
00117 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00118 typename T6, typename T7, typename T8>
00119 inline
00120 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00121 const T3& obj3, const T4& obj4, const T5& obj5, const T6& obj6, const T7& obj7,
00122 const T8& obj8)
00123 {
00124 GET_STR_FROM_PRINT(
00125 prints(out, fmt, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8) );
00126 }
00127
00128
00129 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00130 typename T6, typename T7, typename T8, typename T9>
00131 inline
00132 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00133 const T3& obj3, const T4& obj4, const T5& obj5, const T6& obj6, const T7& obj7,
00134 const T8& obj8, const T9& obj9)
00135 {
00136 GET_STR_FROM_PRINT(
00137 prints(out, fmt, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9) );
00138 }
00139
00140
00141 template <typename T1, typename T2, typename T3, typename T4, typename T5,
00142 typename T6, typename T7, typename T8, typename T9, typename T10>
00143 inline
00144 std::string tostr(const char* fmt, const T1& obj1, const T2& obj2,
00145 const T3& obj3, const T4& obj4, const T5& obj5, const T6& obj6, const T7& obj7,
00146 const T8& obj8, const T9& obj9, const T10& obj10)
00147 {
00148 GET_STR_FROM_PRINT(
00149 prints(out, fmt, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10) );
00150 }
00151
00152 }
00153
00154 #endif // IOF_TOSTR_H
00155