2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file generic_event.h
18 * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
20 * @brief This file is the implementation file of MVC generic event
22 #ifndef DPL_GENERIC_EVENT_H
23 #define DPL_GENERIC_EVENT_H
29 explicit EventSender(void *sender) :
33 void* GetSender() const
48 explicit GenericEvent(const EventSender &sender) :
49 m_sender(sender.GetSender())
52 virtual ~GenericEvent()
55 void *GetSender() const
65 explicit GenericEvent0(const EventSender &sender) :
69 virtual ~GenericEvent0()
73 template<typename Arg0Type>
78 typedef Arg0Type Arg0;
84 explicit GenericEvent1(const EventSender &sender) :
88 GenericEvent1(Arg0 arg0, const EventSender &sender) :
89 GenericEvent0(sender),
93 virtual ~GenericEvent1()
102 template<typename Arg0Type, typename Arg1Type>
103 class GenericEvent2 :
104 public GenericEvent1<Arg0Type>
107 typedef Arg0Type Arg0;
108 typedef Arg1Type Arg1;
114 explicit GenericEvent2(const EventSender &sender) :
115 GenericEvent1<Arg0Type>(sender)
118 GenericEvent2(Arg0 arg0, Arg1 arg1, const EventSender &sender) :
119 GenericEvent1<Arg0Type>(arg0, sender),
123 virtual ~GenericEvent2()
132 template<typename Arg0Type, typename Arg1Type, typename Arg2Type>
133 class GenericEvent3 :
134 public GenericEvent2<Arg0Type, Arg1Type>
137 typedef Arg0Type Arg0;
138 typedef Arg1Type Arg1;
139 typedef Arg2Type Arg2;
145 explicit GenericEvent3(const EventSender &sender) :
146 GenericEvent2<Arg0Type, Arg1Type>(sender)
149 GenericEvent3(Arg0 arg0, Arg1 arg1, Arg2 arg2, const EventSender &sender) :
150 GenericEvent2<Arg0Type, Arg1Type>(arg0, arg1, sender),
154 virtual ~GenericEvent3()
163 template<typename Arg0Type, typename Arg1Type, typename Arg2Type,
165 class GenericEvent4 :
166 public GenericEvent3<Arg0Type, Arg1Type, Arg2Type>
169 typedef Arg0Type Arg0;
170 typedef Arg1Type Arg1;
171 typedef Arg2Type Arg2;
172 typedef Arg3Type Arg3;
178 explicit GenericEvent4(const EventSender &sender) :
179 GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(sender)
182 GenericEvent4(Arg0 arg0,
186 const EventSender &sender) :
187 GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(arg0, arg1, arg2, sender),
191 virtual ~GenericEvent4()
200 template<typename Arg0Type, typename Arg1Type, typename Arg2Type,
201 typename Arg3Type, typename Arg4Type>
202 class GenericEvent5 :
203 public GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>
206 typedef Arg0Type Arg0;
207 typedef Arg1Type Arg1;
208 typedef Arg2Type Arg2;
209 typedef Arg3Type Arg3;
210 typedef Arg4Type Arg4;
216 explicit GenericEvent5(const EventSender &sender) :
217 GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(sender)
220 GenericEvent5(Arg0 arg0,
225 const EventSender &sender) :
226 GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(arg0, arg1, arg2,
231 virtual ~GenericEvent5()
240 template<typename Arg0Type, typename Arg1Type, typename Arg2Type,
241 typename Arg3Type, typename Arg4Type, typename Arg5Type>
242 class GenericEvent6 :
243 public GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>
246 typedef Arg0Type Arg0;
247 typedef Arg1Type Arg1;
248 typedef Arg2Type Arg2;
249 typedef Arg3Type Arg3;
250 typedef Arg4Type Arg4;
251 typedef Arg5Type Arg5;
257 explicit GenericEvent6(const EventSender &sender) :
258 GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(sender)
261 GenericEvent6(Arg0 arg0,
267 const EventSender &sender) :
268 GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(arg0,
277 virtual ~GenericEvent6()
286 template<typename Arg0Type, typename Arg1Type, typename Arg2Type,
287 typename Arg3Type, typename Arg4Type, typename Arg5Type,
289 class GenericEvent7 :
290 public GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
294 typedef Arg0Type Arg0;
295 typedef Arg1Type Arg1;
296 typedef Arg2Type Arg2;
297 typedef Arg3Type Arg3;
298 typedef Arg4Type Arg4;
299 typedef Arg5Type Arg5;
300 typedef Arg6Type Arg6;
306 explicit GenericEvent7(const EventSender &sender) :
307 GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
311 GenericEvent7(Arg0 arg0,
318 const EventSender &sender) :
319 GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
320 Arg5Type>(arg0, arg1, arg2, arg3, arg4, arg5, sender),
324 virtual ~GenericEvent7()
333 template<typename Arg0Type, typename Arg1Type, typename Arg2Type,
334 typename Arg3Type, typename Arg4Type, typename Arg5Type,
337 class GenericEvent8 :
338 public GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
342 typedef Arg0Type Arg0;
343 typedef Arg1Type Arg1;
344 typedef Arg2Type Arg2;
345 typedef Arg3Type Arg3;
346 typedef Arg4Type Arg4;
347 typedef Arg5Type Arg5;
348 typedef Arg6Type Arg6;
349 typedef Arg7Type Arg7;
355 explicit GenericEvent8(const EventSender &sender) :
356 GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
357 Arg5Type, Arg6Type>(sender)
360 GenericEvent8(Arg0 arg0,
368 const EventSender &sender) :
369 GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type,
370 Arg5Type, Arg6Type>(arg0, arg1, arg2, arg3, arg4, arg5,
375 virtual ~GenericEvent8()
385 #define DECLARE_GENERIC_EVENT_0(ClassName) \
387 public DPL::GenericEvent0 \
390 explicit ClassName(const DPL::EventSender & sender = \
391 DPL::EventSender(NULL)) : \
392 DPL::GenericEvent0(sender) \
397 #define DECLARE_GENERIC_EVENT_1(ClassName, Arg0Type) \
399 public DPL::GenericEvent1<Arg0Type> \
402 explicit ClassName(const DPL::EventSender & sender = \
403 DPL::EventSender(NULL)) : \
404 DPL::GenericEvent1<Arg0Type>(sender) \
408 explicit ClassName(Arg0Type arg0, \
409 const DPL::EventSender & sender = \
410 DPL::EventSender(NULL)) : \
411 DPL::GenericEvent1<Arg0Type>(arg0, sender) \
416 #define DECLARE_GENERIC_EVENT_2(ClassName, Arg0Type, Arg1Type) \
418 public DPL::GenericEvent2<Arg0Type, Arg1Type> \
421 explicit ClassName(const DPL::EventSender & sender = \
422 DPL::EventSender(NULL)) : \
423 DPL::GenericEvent2<Arg0Type, Arg1Type>(sender) \
427 ClassName(Arg0Type arg0, Arg1Type arg1, \
428 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
429 DPL::GenericEvent2<Arg0Type, Arg1Type>(arg0, arg1, sender) \
434 #define DECLARE_GENERIC_EVENT_3(ClassName, Arg0Type, Arg1Type, Arg2Type) \
436 public DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type> \
439 explicit ClassName(const DPL::EventSender & sender = \
440 DPL::EventSender(NULL)) : \
441 DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(sender) \
445 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, \
446 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
447 DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(arg0, \
455 #define DECLARE_GENERIC_EVENT_4(ClassName, \
461 public DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type> \
464 explicit ClassName(const DPL::EventSender & sender = \
465 DPL::EventSender(NULL)) : \
466 DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(sender) \
470 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, \
471 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
472 DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(arg0, \
481 #define DECLARE_GENERIC_EVENT_5(ClassName, \
488 public DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, \
492 explicit ClassName(const DPL::EventSender & sender = \
493 DPL::EventSender(NULL)) : \
494 DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>( \
499 ClassName(Arg0Type arg0, \
504 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
505 DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>( \
516 #define DECLARE_GENERIC_EVENT_6(ClassName, \
524 public DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, \
525 Arg4Type, Arg5Type> \
528 explicit ClassName(const DPL::EventSender & sender = \
529 DPL::EventSender(NULL)) : \
530 DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
535 ClassName(Arg0Type arg0, \
541 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
542 DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
554 #define DECLARE_GENERIC_EVENT_7(ClassName, \
563 public DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, \
564 Arg4Type, Arg5Type, Arg6Type> \
567 explicit ClassName(const DPL::EventSender & sender = \
568 DPL::EventSender(NULL)) : \
569 DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
570 Arg5Type, Arg6Type>(sender) \
574 ClassName(Arg0Type arg0, \
581 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
582 DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
583 Arg5Type, Arg6Type>(arg0, \
595 #define DECLARE_GENERIC_EVENT_8(ClassName, \
605 public DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, \
606 Arg4Type, Arg5Type, Arg6Type, Arg7Type> \
609 explicit ClassName(const DPL::EventSender & sender = \
610 DPL::EventSender(NULL)) : \
611 DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
612 Arg5Type, Arg6Type, Arg7Type>(sender) \
616 ClassName(Arg0Type arg0, \
624 const DPL::EventSender & sender = DPL::EventSender(NULL)) : \
625 DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, \
626 Arg5Type, Arg6Type, Arg7Type>(arg0, \
639 #endif // DPL_GENERIC_EVENT_H