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 user_callback_logic.h
18 * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
20 * @brief Implementation file for user callback logic
22 #ifndef USER_CALLBACK_LOGIC_H
23 #define USER_CALLBACK_LOGIC_H
26 #include <dpl/assert.h>
28 class UserCallbackCall
31 virtual ~UserCallbackCall()
34 virtual void Exec() const = 0;
37 template<typename Callback>
38 class GenericUserCallbackCall0 :
39 public UserCallbackCall
45 GenericUserCallbackCall0(Callback callback) :
50 virtual void Exec() const
52 Assert(m_callback != NULL);
57 template<typename Callback, typename Arg0>
58 class GenericUserCallbackCall1 :
59 public UserCallbackCall
66 GenericUserCallbackCall1(Callback callback,
73 virtual void Exec() const
75 Assert(m_callback != NULL);
80 template<typename Callback, typename Arg0, typename Arg1>
81 class GenericUserCallbackCall2 :
82 public UserCallbackCall
90 GenericUserCallbackCall2(Callback callback,
99 virtual void Exec() const
101 Assert(m_callback != NULL);
102 m_callback(m_arg0, m_arg1);
106 template<typename Callback, typename Arg0, typename Arg1, typename Arg2>
107 class GenericUserCallbackCall3 :
108 public UserCallbackCall
117 GenericUserCallbackCall3(Callback callback,
121 m_callback(callback),
128 virtual void Exec() const
130 Assert(m_callback != NULL);
131 m_callback(m_arg0, m_arg1, m_arg2);
135 template<typename Callback, typename Arg0, typename Arg1, typename Arg2,
137 class GenericUserCallbackCall4 :
138 public UserCallbackCall
148 GenericUserCallbackCall4(Callback callback,
153 m_callback(callback),
161 virtual void Exec() const
163 Assert(m_callback != NULL);
164 m_callback(m_arg0, m_arg1, m_arg2, m_arg3);
168 template<typename Callback, typename Arg0, typename Arg1, typename Arg2,
169 typename Arg3, typename Arg4>
170 class GenericUserCallbackCall5 :
171 public UserCallbackCall
182 GenericUserCallbackCall5(Callback callback,
188 m_callback(callback),
197 virtual void Exec() const
199 Assert(m_callback != NULL);
200 m_callback(m_arg0, m_arg1, m_arg2, m_arg3, m_arg4);
205 * @brief User callback logic
207 class UserCallbackLogic
210 virtual ~UserCallbackLogic();
213 * This method send user callback from separate context
215 void EmitUserCallback(const UserCallbackCall *callback);
220 friend class UserCallbackController;
223 #endif // WIDGET_LOGIC_H