Callback.hh
Go to the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026 #ifndef HH_SENF_PPI_detail_Callback_
00027 #define HH_SENF_PPI_detail_Callback_ 1
00028
00029
00030 #include <boost/function.hpp>
00031
00032
00033
00034
00035 namespace senf {
00036 namespace ppi {
00037 namespace detail {
00038
00053 template <class Arg=void>
00054 struct Callback
00055 {
00056 typedef boost::function<void (Arg)> type;
00057
00058 template <class Owner, class FnClass>
00059 static type make(void (FnClass::* memfn )(), Owner & owner);
00060 template <class Owner, class FnClass, class FnArg>
00061 static type make(void (FnClass::* memfn )(FnArg arg), Owner & owner);
00062 template <class Owner>
00063 static type make(type callable, Owner &);
00064 template <class Owner>
00065 static type make(boost::function<void()> callable, Owner &);
00066 };
00067
00068 #ifndef DOXYGEN
00069
00070 template <>
00071 struct Callback<void>
00072 {
00073 typedef boost::function<void ()> type;
00074
00075 template <class Owner, class FnClass>
00076 static type make(void (FnClass::* memfn )(), Owner & owner);
00077 template <class Owner>
00078 static type make(type callable, Owner &);
00079 };
00080
00081 #endif
00082
00083 }}}
00084
00085
00086
00087
00088 #include "Callback.cti"
00089 #endif
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100