yasmine
adapter_cpp11.hpp
Go to the documentation of this file.
1 // //
3 // This file is part of the Seadex yasmine ecosystem (http://yasmine.seadex.de). //
4 // Copyright (C) 2016-2017 Seadex GmbH //
5 // //
6 // Licensing information is available in the folder "license" which is part of this distribution. //
7 // The same information is available on the www @ http://yasmine.seadex.de/Licenses.html. //
8 // //
10 
11 #ifndef ADAPTER_CPP11_630F2EA5_B25B_4585_B496_7C142FF90420
12 #define ADAPTER_CPP11_630F2EA5_B25B_4585_B496_7C142FF90420
13 
14 
15 #ifndef SX_CPP03_BOOST
16 
17 
18 #include "essentials/compatibility/compatibility.hpp"
19 
20 
21 namespace sxy
22 {
23 
24 
25 class event_collector;
26 
27 
28 template<typename T>
29 sxe::function<void()> adapt( T* _object, void ( T::*_method )() )
30 {
31  return( [_object, _method]()
32  {
33  ( _object->*_method )();
34  }
35  );
36 }
37 
38 
39 template<typename T>
40 sxe::function<void()> adapt( T* _object, void ( T::*_method )( ) const )
41 {
42  return( [_object, _method]()
43  {
44  ( _object->*_method )( );
45  }
46  );
47 }
48 
49 
50 template<typename T, typename _event_type>
51 sxe::function<void( const _event_type& )> adapt( T* _object,
52  void ( T::*_method )( const _event_type& ) )
53 {
54  return( [_object, _method]( const _event_type& _event)
55  {
56  ( _object->*_method )( _event );
57  }
58  );
59 }
60 
61 
62 template<typename T, typename _event_type>
63 sxe::function<void( const _event_type&)> adapt( T* _object,
64  void ( T::*_method )( const _event_type& ) const )
65 {
66  return( [_object, _method]( const _event_type& _event )
67  {
68  ( _object->*_method )( _event );
69  }
70  );
71 }
72 
73 
74 template<typename T>
75 sxe::function<void( sxy::event_collector& )> adapt( T* _object,
76  void ( T::*_method )( sxy::event_collector& ) )
77 {
78  return( [_object, _method]( sxy::event_collector& _event_collector )
79  {
80  ( _object->*_method )( _event_collector );
81  }
82  );
83 }
84 
85 
86 template<typename T>
87 sxe::function<void( sxy::event_collector& )> adapt( T* _object,
88  void ( T::*_method )( sxy::event_collector& ) const )
89 {
90  return( [_object, _method]( sxy::event_collector& _event_collector )
91  {
92  ( _object->*_method )( _event_collector );
93  }
94  );
95 }
96 
97 
98 template<typename T, typename _event_type>
99 sxe::function<void( const _event_type&, sxy::event_collector& )> adapt( T* _object,
100  void ( T::*_method )( const _event_type&, sxy::event_collector& ) )
101 {
102  return( [_object, _method]( const _event_type& _event, sxy::event_collector& _event_collector )
103  {
104  ( _object->*_method )( _event, _event_collector );
105  }
106  );
107 }
108 
109 
110 template<typename T, typename _event_type>
111 sxe::function<void( const _event_type&, sxy::event_collector& )> adapt( T* _object,
112  void ( T::*_method )( const _event_type&, sxy::event_collector& ) const )
113 {
114  return( [_object, _method]( const _event_type& _event, sxy::event_collector& _event_collector )
115  {
116  ( _object->*_method )( _event, _event_collector );
117  }
118  );
119 }
120 
121 
122 sxe::function<void()> adapt_function( void( *_function )() );
123 
124 
125 sxe::function<void( sxy::event_collector& )> adapt_function( void( *_function )( sxy::event_collector& ) );
126 
127 
128 template< typename _event_type >
129 sxe::function<void( const _event_type& )> adapt_function(
130  void ( *_function )( const _event_type& ) )
131 {
132  return( [ _function ]( const _event_type& _event )
133  {
134  ( *_function )( _event );
135  }
136  );
137 }
138 
139 
140 template< typename _event_type >
141 sxe::function<void( const _event_type&, sxy::event_collector& )> adapt_function(
142  void( *_function )( const _event_type&, sxy::event_collector& ) )
143 {
144  return( [ _function ]( const _event_type& _event, sxy::event_collector& _event_collector )
145  {
146  ( *_function )( _event, _event_collector );
147  }
148  );
149 }
150 
151 
152 
153 template<typename T>
154 sxe::function<bool()> adapt( T* _object, bool ( T::*_method )() )
155 {
156  return( [_object, _method]()
157  {
158  return( ( _object->*_method )( ) );
159  }
160  );
161 }
162 
163 
164 template<typename T>
165 sxe::function<bool()> adapt( T* _object, bool ( T::*_method )() const )
166 {
167  return( [_object, _method]()
168  {
169  return( ( _object->*_method )( ) );
170  }
171  );
172 }
173 
174 
175 template<typename T, typename _event_type>
176 sxe::function<bool( const _event_type& )> adapt( T* _object, bool ( T::*_method )( const _event_type& ) )
177 {
178  return( [_object, _method]( const _event_type& _event )
179  {
180  return( ( _object->*_method )( _event ) );
181  }
182  );
183 }
184 
185 
186 template<typename T, typename _event_type>
187 sxe::function<bool( const _event_type& )> adapt( T* _object, bool ( T::*_method )( const _event_type& ) const )
188 {
189  return( [_object, _method]( const _event_type& _event )
190  {
191  return( ( _object->*_method )( _event ) );
192  }
193  );
194 }
195 
196 
197 template<typename T>
198 sxe::function<bool( sxy::event_collector& )> adapt( T* _object,
199  bool ( T::*_method )( sxy::event_collector& ) )
200 {
201  return( [_object, _method]( sxy::event_collector& _event_collector )
202  {
203  return ( ( _object->*_method )( _event_collector ) );
204  }
205  );
206 }
207 
208 
209 template<typename T>
210 sxe::function<bool( sxy::event_collector& )> adapt( T* _object,
211  bool ( T::*_method )( sxy::event_collector& ) const )
212 {
213  return( [_object, _method]( sxy::event_collector& _event_collector )
214  {
215  return( ( _object->*_method )( _event_collector ) );
216  }
217  );
218 }
219 
220 
221 template<typename T, typename _event_type>
222 sxe::function<bool( const _event_type&, sxy::event_collector& )> adapt( T* _object,
223  bool ( T::*_method )( const _event_type&, sxy::event_collector& ) )
224 {
225  return( [_object, _method]( const _event_type& _event, sxy::event_collector& _event_collector )
226  {
227  return( ( _object->*_method )( _event, _event_collector ) );
228  }
229  );
230 }
231 
232 
233 template<typename T, typename _event_type>
234 sxe::function<bool( const _event_type&, sxy::event_collector& )> adapt( T* _object,
235  bool ( T::*_method )( const _event_type&, sxy::event_collector& ) const )
236 {
237  return( [_object, _method]( const _event_type& _event, sxy::event_collector& _event_collector )
238  {
239  return( ( _object->*_method )( _event, _event_collector ) );
240  }
241  );
242 }
243 
244 
245 sxe::function<bool()> adapt_function( bool( *_function )() );
246 
247 
248 sxe::function<bool( sxy::event_collector& )> adapt_function( bool( *_function )( sxy::event_collector& ) );
249 
250 
251 template< typename _event_type >
252 sxe::function<bool( const _event_type& )> adapt_function( bool( *_function )( const _event_type& ) )
253 {
254  return( [_function]( const _event_type& _event )
255  {
256  return( ( *_function )( _event ) );
257  }
258  );
259 }
260 
261 
262 template< typename _event_type >
263 sxe::function<bool( const _event_type&, sxy::event_collector& )> adapt_function(
264  bool( *_function )( const _event_type&, sxy::event_collector& ) )
265 {
266  return( [_function]( const _event_type& _event, sxy::event_collector& _event_collector )
267  {
268  return( ( *_function )( _event, _event_collector ) );
269  }
270  );
271 }
272 
273 
274 }
275 
276 
277 #endif
278 
279 
280 #endif
Definition: event_collector.hpp:25
Definition: adapter_cpp11.hpp:21
sxe::function< void()> adapt(T *_object, void(T::*_method)())
Definition: adapter_cpp11.hpp:29
sxe::function< void(sxy::event_collector &)> adapt_function(void(*_function)(sxy::event_collector &))
Definition: adapter_cpp11.hpp:125