00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00026
00036
00037
00038 #ifndef _XST_ACTION_HELPERS_H_INCLUDED_
00039 #define _XST_ACTION_HELPERS_H_INCLUDED_
00040
00041 namespace cttl {
00042
00065 template< typename StaticActionT, typename ArgumentT >
00066 inline xst_static_action< StaticActionT, ArgumentT&, typename StaticActionT::result_type >
00067 action(
00068 StaticActionT action_,
00069 ArgumentT* pargument_
00070 )
00071 {
00072 return xst_static_action< StaticActionT, ArgumentT&, typename StaticActionT::result_type >(
00073 #ifdef CTTL_TRACE_DEPOSITS
00074 __LINE__,
00075 "xst_static_action",
00076 #endif // CTTL_TRACE_DEPOSITS
00077 action_,
00078 *pargument_
00079 );
00080 }
00081
00104 template< typename StaticActionT, typename ArgumentT >
00105 inline xst_static_action< StaticActionT, ArgumentT const&, typename StaticActionT::result_type >
00106 action(
00107 StaticActionT action_,
00108 ArgumentT const& argument_
00109 )
00110 {
00111 return xst_static_action< StaticActionT, ArgumentT const&, typename StaticActionT::result_type >(
00112 #ifdef CTTL_TRACE_DEPOSITS
00113 __LINE__,
00114 "xst_static_action",
00115 #endif // CTTL_TRACE_DEPOSITS
00116 action_,
00117 argument_
00118 );
00119 }
00120
00137 template< typename ReturnT, typename StaticActionT >
00138 inline xst_static_action< StaticActionT, void, ReturnT >
00139 action(
00140 StaticActionT action_
00141 )
00142 {
00143 return xst_static_action< StaticActionT, void, ReturnT >(
00144 #ifdef CTTL_TRACE_DEPOSITS
00145 __LINE__,
00146 "xst_static_action",
00147 #endif // CTTL_TRACE_DEPOSITS
00148 action_
00149 );
00150 }
00151
00152
00153
00154
00182 template< typename ObjectT, typename MemberActionT, typename ArgumentT >
00183 inline xst_member_action< ObjectT const&, MemberActionT, ArgumentT&, typename MemberActionT::result_type >
00184 action(
00185 ObjectT const& object_,
00186 MemberActionT action_,
00187 ArgumentT* pargument_
00188 )
00189 {
00190 return xst_member_action< ObjectT const&, MemberActionT, ArgumentT&, typename MemberActionT::result_type >(
00191 #ifdef CTTL_TRACE_DEPOSITS
00192 __LINE__,
00193 "xst_member_action",
00194 #endif // CTTL_TRACE_DEPOSITS
00195 object_,
00196 action_,
00197 *pargument_
00198 );
00199 }
00200
00229 template< typename ObjectT, typename MemberActionT, typename ArgumentT >
00230 inline xst_member_action< ObjectT&, MemberActionT, ArgumentT&, typename MemberActionT::result_type >
00231 action(
00232 ObjectT* pobject_,
00233 MemberActionT action_,
00234 ArgumentT* pargument_
00235 )
00236 {
00237 return xst_member_action< ObjectT&, MemberActionT, ArgumentT&, typename MemberActionT::result_type >(
00238 #ifdef CTTL_TRACE_DEPOSITS
00239 __LINE__,
00240 "xst_member_action",
00241 #endif // CTTL_TRACE_DEPOSITS
00242 *pobject_,
00243 action_,
00244 *pargument_
00245 );
00246 }
00247
00275 template< typename ObjectT, typename MemberActionT, typename ArgumentT >
00276 inline xst_member_action< ObjectT const&, MemberActionT, ArgumentT const&, typename MemberActionT::result_type >
00277 action(
00278 ObjectT const& object_,
00279 MemberActionT action_,
00280 ArgumentT const& argument_
00281 )
00282 {
00283 return xst_member_action< ObjectT const&, MemberActionT, ArgumentT const&, typename MemberActionT::result_type >(
00284 #ifdef CTTL_TRACE_DEPOSITS
00285 __LINE__,
00286 "xst_member_action",
00287 #endif // CTTL_TRACE_DEPOSITS
00288 object_,
00289 action_,
00290 argument_
00291 );
00292 }
00293
00322 template< typename ObjectT, typename MemberActionT, typename ArgumentT >
00323 inline xst_member_action< ObjectT&, MemberActionT, ArgumentT const&, typename MemberActionT::result_type >
00324 action(
00325 ObjectT* pobject_,
00326 MemberActionT action_,
00327 ArgumentT const& argument_
00328 )
00329 {
00330 return xst_member_action< ObjectT&, MemberActionT, ArgumentT const&, typename MemberActionT::result_type >(
00331 #ifdef CTTL_TRACE_DEPOSITS
00332 __LINE__,
00333 "xst_member_action",
00334 #endif // CTTL_TRACE_DEPOSITS
00335 *pobject_,
00336 action_,
00337 argument_
00338 );
00339 }
00340
00362 template< typename ObjectT, typename MemberActionT >
00363 inline xst_member_action< ObjectT const&, MemberActionT, void, typename MemberActionT::result_type >
00364 action(
00365 ObjectT const& object_,
00366 MemberActionT action_
00367 )
00368 {
00369 return xst_member_action< ObjectT const&, MemberActionT, void, typename MemberActionT::result_type >(
00370 #ifdef CTTL_TRACE_DEPOSITS
00371 __LINE__,
00372 "xst_member_action",
00373 #endif // CTTL_TRACE_DEPOSITS
00374 object_,
00375 action_
00376 );
00377 }
00378
00379
00402 template< typename ObjectT, typename MemberActionT >
00403 inline xst_member_action< ObjectT&, MemberActionT, void, typename MemberActionT::result_type >
00404 action(
00405 ObjectT* pobject_,
00406 MemberActionT action_
00407 )
00408 {
00409 return xst_member_action< ObjectT&, MemberActionT, void, typename MemberActionT::result_type >(
00410 #ifdef CTTL_TRACE_DEPOSITS
00411 __LINE__,
00412 "xst_member_action",
00413 #endif // CTTL_TRACE_DEPOSITS
00414 *pobject_,
00415 action_
00416 );
00417 }
00418
00419 }
00420
00421 #endif //_XST_ACTION_HELPERS_H_INCLUDED_