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()23 Handle() : p( 0 ){
24 }
Handle(Type * p)25 explicit Handle( Type* p ) : p( p ){
26 }
get()27 Type* get() const {
28 	return p;
29 }
isNull()30 bool 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