00001 00002 #if !defined(INCLUDED_SIGNALFWD_H) 00003 #define INCLUDED_SIGNALFWD_H 00004 00005 class SignalHandler; 00006 template<typename FirstArgument> 00007 class SignalHandler1; 00008 template<typename FirstArgument, typename SecondArgument> 00009 class SignalHandler2; 00010 template<typename FirstArgument, typename SecondArgument, typename ThirdArgument> 00011 class SignalHandler3; 00012 00013 template<typename Context> 00014 class Opaque; 00015 00018 template<typename Type> 00019 class Handle { 00020 Type* p; 00021 public: 00022 Handle() : p(0) { 00023 } 00024 explicit Handle(Type* p) : p(p) { 00025 } 00026 Type* get() const { 00027 return p; 00028 } 00029 bool isNull() const { 00030 return p == 0; 00031 } 00032 }; 00033 00034 template<typename Handler> 00035 class SignalFwd { 00036 public: 00037 typedef Handle< Opaque<Handler> > handler_id_type; 00038 }; 00039 00040 typedef SignalFwd<SignalHandler>::handler_id_type SignalHandlerId; 00041 00042 #endif