00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef lestes__msg___reporting_operators_hh___included
00029 #define lestes__msg___reporting_operators_hh___included
00030
00031
00032
00033
00034
00035
00036
00037 #include <lestes/common.hh>
00038 #include <lestes/std/source_location.hh>
00039 #include <lestes/msg/message_stencil.hh>
00040 #include <lestes/msg/message.hh>
00041 #include <lestes/msg/argument_holder.hh>
00042 #include <lestes/msg/reporter.hh>
00043
00044 package(lestes);
00045 package(std);
00046
00047
00048
00049
00050
00051
00052 template <typename T>
00053 ptr< ::lestes::msg::argument_holder00<T> > operator<<(const ptr< ::lestes::msg::reporter > &,
00054 const ptr< ::lestes::msg::message_stencil0<T> > &ms0)
00055 {
00056 return ::lestes::msg::argument_holder00<T>::create(ms0);
00057 }
00058
00059
00060
00061
00062
00063
00064 template <typename T>
00065 void operator<<(const ptr< ::lestes::msg::argument_holder00<T> > &holder, const ptr<source_location> &loc)
00066 {
00067 ptr< ::lestes::msg::reporter > r = ::lestes::msg::reporter::instance();
00068 ptr< ::lestes::msg::message_stencil0<T> > ms0 = holder->stencil_get();
00069 ptr< ::lestes::msg::message > m = ms0->format();
00070 r->report(m,loc);
00071 }
00072
00073
00074
00075
00076
00077
00078 template <typename P0>
00079 ptr< ::lestes::msg::argument_holder10<P0> > operator<<(const ptr< ::lestes::msg::reporter > &,
00080 const ptr< ::lestes::msg::message_stencil1<P0> > &ms1)
00081 {
00082 return ::lestes::msg::argument_holder10<P0>::create(ms1);
00083 }
00084
00085
00086
00087
00088
00089
00090
00091 template <typename P0>
00092 ptr< ::lestes::msg::argument_holder11<P0> > operator<<(const ptr< ::lestes::msg::argument_holder10<P0> > &holder,
00093 const P0 &p0)
00094 {
00095 return ::lestes::msg::argument_holder11<P0>::create(holder,p0);
00096 }
00097
00098
00099
00100
00101
00102
00103 template <typename P0>
00104 void operator<<(const ptr< ::lestes::msg::argument_holder11<P0> > &holder, const ptr<source_location> &loc)
00105 {
00106 ptr< ::lestes::msg::reporter > r = ::lestes::msg::reporter::instance();
00107 ptr< ::lestes::msg::message_stencil1<P0> > ms1 = holder->stencil_get();
00108 P0 p0 = holder->p0_get();
00109 ptr< ::lestes::msg::message > m = ms1->format(p0);
00110 r->report(m,loc);
00111 }
00112
00113
00114
00115
00116
00117
00118 template <typename P0, typename P1>
00119 ptr< ::lestes::msg::argument_holder20<P0,P1> > operator<<(const ptr< ::lestes::msg::reporter > &,
00120 const ptr< ::lestes::msg::message_stencil2<P0,P1> > &ms2)
00121 {
00122 return ::lestes::msg::argument_holder20<P0,P1>::create(ms2);
00123 }
00124
00125
00126
00127
00128
00129
00130
00131 template <typename P0, typename P1>
00132 ptr< ::lestes::msg::argument_holder21<P0,P1> > operator<<(const ptr< ::lestes::msg::argument_holder20<P0,P1> > &holder,
00133 const P0 &p0)
00134 {
00135 return ::lestes::msg::argument_holder21<P0,P1>::create(holder,p0);
00136 }
00137
00138
00139
00140
00141
00142
00143
00144 template <typename P0, typename P1>
00145 ptr< ::lestes::msg::argument_holder22<P0,P1> > operator<<(const ptr< ::lestes::msg::argument_holder21<P0,P1> > &holder,
00146 const P1 &p1)
00147 {
00148 return ::lestes::msg::argument_holder22<P0,P1>::create(holder,p1);
00149 }
00150
00151
00152
00153
00154
00155
00156 template <typename P0, typename P1>
00157 void operator<<(const ptr< ::lestes::msg::argument_holder22<P0,P1> > &holder, const ptr<source_location> &loc)
00158 {
00159 ptr< ::lestes::msg::reporter > r = ::lestes::msg::reporter::instance();
00160 ptr< ::lestes::msg::message_stencil2<P0,P1> > ms2 = holder->stencil_get();
00161 P0 p0 = holder->p0_get();
00162 P1 p1 = holder->p1_get();
00163 ptr< ::lestes::msg::message > m = ms2->format(p0,p1);
00164 r->report(m,loc);
00165 }
00166
00167
00168
00169
00170
00171
00172 template <typename P0, typename P1, typename P2>
00173 ptr< ::lestes::msg::argument_holder30<P0,P1,P2> > operator<<(const ptr< ::lestes::msg::reporter > &,
00174 const ptr< ::lestes::msg::message_stencil3<P0,P1,P2> > &ms3)
00175 {
00176 return ::lestes::msg::argument_holder30<P0,P1,P2>::create(ms3);
00177 }
00178
00179
00180
00181
00182
00183
00184
00185 template <typename P0, typename P1, typename P2>
00186 ptr< ::lestes::msg::argument_holder31<P0,P1,P2> > operator<<(
00187 const ptr< ::lestes::msg::argument_holder30<P0,P1,P2> > &holder,
00188 const P0 &p0)
00189 {
00190 return ::lestes::msg::argument_holder31<P0,P1,P2>::create(holder,p0);
00191 }
00192
00193
00194
00195
00196
00197
00198
00199 template <typename P0, typename P1, typename P2>
00200 ptr< ::lestes::msg::argument_holder32<P0,P1,P2> > operator<<(
00201 const ptr< ::lestes::msg::argument_holder31<P0,P1,P2> > &holder,
00202 const P1 &p1)
00203 {
00204 return ::lestes::msg::argument_holder32<P0,P1,P2>::create(holder,p1);
00205 }
00206
00207
00208
00209
00210
00211
00212
00213 template <typename P0, typename P1, typename P2>
00214 ptr< ::lestes::msg::argument_holder33<P0,P1,P2> > operator<<(
00215 const ptr< ::lestes::msg::argument_holder32<P0,P1,P2> > &holder,
00216 const P2 &p2)
00217 {
00218 return ::lestes::msg::argument_holder33<P0,P1,P2>::create(holder,p2);
00219 }
00220
00221
00222
00223
00224
00225
00226 template <typename P0, typename P1, typename P2>
00227 void operator<<(const ptr< ::lestes::msg::argument_holder33<P0,P1,P2> > &holder, const ptr<source_location> &loc)
00228 {
00229 ptr< ::lestes::msg::reporter > r = ::lestes::msg::reporter::instance();
00230 ptr< ::lestes::msg::message_stencil3<P0,P1,P2> > ms3 = holder->stencil_get();
00231 P0 p0 = holder->p0_get();
00232 P1 p1 = holder->p1_get();
00233 P2 p2 = holder->p2_get();
00234 ptr< ::lestes::msg::message> m = ms3->format(p0,p1,p2);
00235 r->report(m,loc);
00236 }
00237
00238 end_package(std);
00239 end_package(lestes);
00240 #endif
00241