]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - libs/signal/signalfwd.h
Merge remote-tracking branch 'ttimo/master'
[xonotic/netradiant.git] / libs / signal / signalfwd.h
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:
23 Handle() : p( 0 ){
24 }
25 explicit Handle( Type* p ) : p( p ){
26 }
27 Type* get() const {
28         return p;
29 }
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