1 2 #if !defined( INCLUDED_SIGNALFWD_H ) 3 #define INCLUDED_SIGNALFWD_H 4 5 class SignalHandler; 6 template<typename FirstArgument> 7 class SignalHandler1; 8 template<typename FirstArgument, typename SecondArgument> 9 class SignalHandler2; 10 template<typename FirstArgument, typename SecondArgument, typename ThirdArgument> 11 class SignalHandler3; 12 13 template<typename Context> 14 class Opaque; 15 16 ///\brief A pointer that always has a well-defined value. 17 /// If no value is specified, the appropriate null value is used. 18 template<typename Type> 19 class Handle 20 { 21 Type* p; 22 public: Handle()23Handle() : p( 0 ){ 24 } Handle(Type * p)25explicit Handle( Type* p ) : p( p ){ 26 } get()27Type* get() const { 28 return p; 29 } isNull()30bool isNull() const { 31 return p == 0; 32 } 33 }; 34 35 template<typename Handler> 36 class SignalFwd 37 { 38 public: 39 typedef Handle< Opaque<Handler> > handler_id_type; 40 }; 41 42 typedef SignalFwd<SignalHandler>::handler_id_type SignalHandlerId; 43 44 #endif 45