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
31 explicit EventSender(void *sender)
36 void* GetSender() const
51 explicit GenericEvent(const EventSender &sender)
52 : m_sender(sender.GetSender())
56 virtual ~GenericEvent()
60 void *GetSender() const
70 explicit GenericEvent0(const EventSender &sender)
71 : GenericEvent(sender)
75 virtual ~GenericEvent0()
81 template<typename Arg0Type>
83 : public GenericEvent0
86 typedef Arg0Type Arg0;
92 explicit GenericEvent1(const EventSender &sender)
93 : GenericEvent0(sender)
97 GenericEvent1(Arg0 arg0, const EventSender &sender)
98 : GenericEvent0(sender),
103 virtual ~GenericEvent1()
113 template<typename Arg0Type, typename Arg1Type>
115 : public GenericEvent1<Arg0Type>
118 typedef Arg0Type Arg0;
119 typedef Arg1Type Arg1;
125 explicit GenericEvent2(const EventSender &sender)
126 : GenericEvent1<Arg0Type>(sender)
130 GenericEvent2(Arg0 arg0, Arg1 arg1, const EventSender &sender)
131 : GenericEvent1<Arg0Type>(arg0, sender),
136 virtual ~GenericEvent2()
146 template<typename Arg0Type, typename Arg1Type, typename Arg2Type>
148 : public GenericEvent2<Arg0Type, Arg1Type>
151 typedef Arg0Type Arg0;
152 typedef Arg1Type Arg1;
153 typedef Arg2Type Arg2;
159 explicit GenericEvent3(const EventSender &sender)
160 : GenericEvent2<Arg0Type, Arg1Type>(sender)
164 GenericEvent3(Arg0 arg0, Arg1 arg1, Arg2 arg2, const EventSender &sender)
165 : GenericEvent2<Arg0Type, Arg1Type>(arg0, arg1, sender),
170 virtual ~GenericEvent3()
180 template<typename Arg0Type, typename Arg1Type, typename Arg2Type, typename Arg3Type>
182 : public GenericEvent3<Arg0Type, Arg1Type, Arg2Type>
185 typedef Arg0Type Arg0;
186 typedef Arg1Type Arg1;
187 typedef Arg2Type Arg2;
188 typedef Arg3Type Arg3;
194 explicit GenericEvent4(const EventSender &sender)
195 : GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(sender)
199 GenericEvent4(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, const EventSender &sender)
200 : GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(arg0, arg1, arg2, sender),
205 virtual ~GenericEvent4()
215 template<typename Arg0Type, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type>
217 : public GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>
220 typedef Arg0Type Arg0;
221 typedef Arg1Type Arg1;
222 typedef Arg2Type Arg2;
223 typedef Arg3Type Arg3;
224 typedef Arg4Type Arg4;
230 explicit GenericEvent5(const EventSender &sender)
231 : GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(sender)
235 GenericEvent5(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, const EventSender &sender)
236 : GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(arg0, arg1, arg2, arg3, sender),
241 virtual ~GenericEvent5()
251 template<typename Arg0Type, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type>
253 : public GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>
256 typedef Arg0Type Arg0;
257 typedef Arg1Type Arg1;
258 typedef Arg2Type Arg2;
259 typedef Arg3Type Arg3;
260 typedef Arg4Type Arg4;
261 typedef Arg5Type Arg5;
267 explicit GenericEvent6(const EventSender &sender)
268 : GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(sender)
272 GenericEvent6(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, const EventSender &sender)
273 : GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(arg0, arg1, arg2, arg3, arg4, sender),
278 virtual ~GenericEvent6()
288 template<typename Arg0Type, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type, typename Arg6Type>
290 : public GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type>
293 typedef Arg0Type Arg0;
294 typedef Arg1Type Arg1;
295 typedef Arg2Type Arg2;
296 typedef Arg3Type Arg3;
297 typedef Arg4Type Arg4;
298 typedef Arg5Type Arg5;
299 typedef Arg6Type Arg6;
305 explicit GenericEvent7(const EventSender &sender)
306 : GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type>(sender)
310 GenericEvent7(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6, const EventSender &sender)
311 : GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type>(arg0, arg1, arg2, arg3, arg4, arg5, sender),
316 virtual ~GenericEvent7()
326 template<typename Arg0Type, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Arg4Type, typename Arg5Type, typename Arg6Type, typename Arg7Type>
328 : public GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type>
331 typedef Arg0Type Arg0;
332 typedef Arg1Type Arg1;
333 typedef Arg2Type Arg2;
334 typedef Arg3Type Arg3;
335 typedef Arg4Type Arg4;
336 typedef Arg5Type Arg5;
337 typedef Arg6Type Arg6;
338 typedef Arg7Type Arg7;
344 explicit GenericEvent8(const EventSender &sender)
345 : GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type>(sender)
349 GenericEvent8(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6, Arg7 arg7, const EventSender &sender)
350 : GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type>(arg0, arg1, arg2, arg3, arg4, arg5, arg6, sender),
355 virtual ~GenericEvent8()
367 #define DECLARE_GENERIC_EVENT_0(ClassName) \
369 : public DPL::GenericEvent0 \
372 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
373 : DPL::GenericEvent0(sender) \
378 #define DECLARE_GENERIC_EVENT_1(ClassName, Arg0Type) \
380 : public DPL::GenericEvent1<Arg0Type> \
383 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
384 : DPL::GenericEvent1<Arg0Type>(sender) \
388 explicit ClassName(Arg0Type arg0, \
389 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
390 : DPL::GenericEvent1<Arg0Type>(arg0, sender) \
395 #define DECLARE_GENERIC_EVENT_2(ClassName, Arg0Type, Arg1Type) \
397 : public DPL::GenericEvent2<Arg0Type, Arg1Type> \
400 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
401 : DPL::GenericEvent2<Arg0Type, Arg1Type>(sender) \
405 ClassName(Arg0Type arg0, Arg1Type arg1, \
406 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
407 : DPL::GenericEvent2<Arg0Type, Arg1Type>(arg0, arg1, sender) \
412 #define DECLARE_GENERIC_EVENT_3(ClassName, Arg0Type, Arg1Type, Arg2Type) \
414 : public DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type> \
417 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
418 : DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(sender) \
422 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, \
423 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
424 : DPL::GenericEvent3<Arg0Type, Arg1Type, Arg2Type>(arg0, arg1, arg2, sender) \
429 #define DECLARE_GENERIC_EVENT_4(ClassName, Arg0Type, Arg1Type, Arg2Type, Arg3Type) \
431 : public DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type> \
434 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
435 : DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(sender) \
439 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, \
440 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
441 : DPL::GenericEvent4<Arg0Type, Arg1Type, Arg2Type, Arg3Type>(arg0, arg1, arg2, arg3, sender) \
446 #define DECLARE_GENERIC_EVENT_5(ClassName, Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type) \
448 : public DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type> \
451 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
452 : DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(sender) \
456 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, \
457 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
458 : DPL::GenericEvent5<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type>(arg0, arg1, arg2, arg3, arg4, sender) \
463 #define DECLARE_GENERIC_EVENT_6(ClassName, Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type) \
465 : public DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type> \
468 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
469 : DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type>(sender) \
473 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5, \
474 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
475 : DPL::GenericEvent6<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type>(arg0, arg1, arg2, arg3, arg4, arg5, sender) \
480 #define DECLARE_GENERIC_EVENT_7(ClassName, Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type) \
482 : public DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type> \
485 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
486 : DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type>(sender) \
490 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5, Arg6Type arg6, \
491 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
492 : DPL::GenericEvent7<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type>(arg0, arg1, arg2, arg3, arg4, arg5, arg6, sender) \
497 #define DECLARE_GENERIC_EVENT_8(ClassName, Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type, Arg7Type) \
499 : public DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type, Arg7Type> \
502 explicit ClassName(const DPL::EventSender &sender = DPL::EventSender(NULL)) \
503 : DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type, Arg7Type>(sender) \
507 ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, Arg4Type arg4, Arg5Type arg5, Arg6Type arg6, Arg7Type arg7, \
508 const DPL::EventSender &sender = DPL::EventSender(NULL)) \
509 : DPL::GenericEvent8<Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type, Arg5Type, Arg6Type, Arg7Type>(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, sender) \
514 #endif // DPL_GENERIC_EVENT_H