MyGUI
3.2.1
|
00001 /* 00002 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 00003 * Distributed under the MIT License 00004 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 00005 */ 00006 00007 #ifndef __MYGUI_EVENT_PAIR_H__ 00008 #define __MYGUI_EVENT_PAIR_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 00012 namespace MyGUI 00013 { 00014 00015 template <typename EventObsolete, typename Event> 00016 class EventPair 00017 { 00018 public: 00019 00020 template <typename T> 00021 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00022 void operator = (T* _delegate) 00023 { 00024 m_eventObsolete = _delegate; 00025 m_event = nullptr; 00026 } 00027 00028 MYGUI_OBSOLETE("use : operator += ") 00029 void operator = (typename Event::IDelegate* _delegate) 00030 { 00031 m_eventObsolete = nullptr; 00032 m_event = _delegate; 00033 } 00034 00035 template <typename T> 00036 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00037 void operator += (T* _delegate) 00038 { 00039 m_eventObsolete += _delegate; 00040 m_event.clear(); 00041 } 00042 00043 void operator += (typename Event::IDelegate* _delegate) 00044 { 00045 m_eventObsolete.clear(); 00046 m_event += _delegate; 00047 } 00048 00049 template <typename T> 00050 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00051 void operator -= (T* _delegate) 00052 { 00053 m_eventObsolete -= _delegate; 00054 m_event.clear(); 00055 } 00056 00057 void operator -= (typename Event::IDelegate* _delegate) 00058 { 00059 m_eventObsolete.clear(); 00060 m_event -= _delegate; 00061 } 00062 00063 template <typename TP1> 00064 void operator()( TP1 p1 ) 00065 { 00066 m_eventObsolete(p1); 00067 m_event(p1); 00068 } 00069 00070 template <typename TP1, typename TP2> 00071 void operator()( TP1 p1, TP2 p2 ) 00072 { 00073 m_eventObsolete(p1, p2); 00074 m_event(p1, p2); 00075 } 00076 00077 template <typename TP1, typename TP2, typename TP3> 00078 void operator()( TP1 p1, TP2 p2, TP3 p3 ) 00079 { 00080 m_eventObsolete(p1, p2, p3); 00081 m_event(p1, p2, p3); 00082 } 00083 00084 template <typename TP1, typename TP2, typename TP3, typename TP4> 00085 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4 ) 00086 { 00087 m_eventObsolete(p1, p2, p3, p4); 00088 m_event(p1, p2, p3, p4); 00089 } 00090 00091 template <typename TP1, typename TP2, typename TP3, typename TP4, typename TP5> 00092 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4, TP5 p5 ) 00093 { 00094 m_eventObsolete(p1, p2, p3, p4, p5); 00095 m_event(p1, p2, p3, p4, p5); 00096 } 00097 00098 template <typename TP1, typename TP2, typename TP3, typename TP4, typename TP5, typename TP6> 00099 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4, TP5 p5, TP6 p6 ) 00100 { 00101 m_eventObsolete(p1, p2, p3, p4, p5, p6); 00102 m_event(p1, p2, p3, p4, p5, p6); 00103 } 00104 00105 template <typename TP1, typename TP2, typename TP3, typename TP4, typename TP5, typename TP6, typename TP7> 00106 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4, TP5 p5, TP6 p6, TP7 p7 ) 00107 { 00108 m_eventObsolete(p1, p2, p3, p4, p5, p6, p7); 00109 m_event(p1, p2, p3, p4, p5, p6, p7); 00110 } 00111 00112 template <typename TP1, typename TP2, typename TP3, typename TP4, typename TP5, typename TP6, typename TP7, typename TP8> 00113 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4, TP5 p5, TP6 p6, TP7 p7, TP8 p8 ) 00114 { 00115 m_eventObsolete(p1, p2, p3, p4, p5, p6, p7, p8); 00116 m_event(p1, p2, p3, p4, p5, p6, p7, p8); 00117 } 00118 00119 bool empty() const 00120 { 00121 return m_eventObsolete.empty() && m_event.empty(); 00122 } 00123 00124 public: 00125 EventObsolete m_eventObsolete; 00126 Event m_event; 00127 }; 00128 00129 template <typename EventObsolete, typename Event> 00130 class EventPairAddParameter 00131 { 00132 public: 00133 00134 template <typename T> 00135 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00136 void operator = (T* _delegate) 00137 { 00138 m_eventObsolete = _delegate; 00139 m_event = nullptr; 00140 } 00141 00142 MYGUI_OBSOLETE("use : operator += ") 00143 void operator = (typename Event::IDelegate* _delegate) 00144 { 00145 m_eventObsolete = nullptr; 00146 m_event = _delegate; 00147 } 00148 00149 template <typename T> 00150 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00151 void operator += (T* _delegate) 00152 { 00153 m_eventObsolete += _delegate; 00154 m_event.clear(); 00155 } 00156 00157 void operator += (typename Event::IDelegate* _delegate) 00158 { 00159 m_eventObsolete.clear(); 00160 m_event += _delegate; 00161 } 00162 00163 template <typename T> 00164 MYGUI_OBSOLETE("use : signature : Event::IDelegate * _delegate") 00165 void operator -= (T* _delegate) 00166 { 00167 m_eventObsolete -= _delegate; 00168 m_event.clear(); 00169 } 00170 00171 void operator -= (typename Event::IDelegate* _delegate) 00172 { 00173 m_eventObsolete.clear(); 00174 m_event -= _delegate; 00175 } 00176 00177 // 1 to 2 00178 template <typename TP1, typename TP2> 00179 void operator()( TP1 p1, TP2 p2 ) 00180 { 00181 m_eventObsolete(p1); 00182 m_event(p1, p2); 00183 } 00184 00185 // 2 to 3 00186 template <typename TP1, typename TP2, typename TP3, typename TP4> 00187 void operator()( TP1 p1, TP2 p2, TP3 p3 ) 00188 { 00189 m_eventObsolete(p1, p2); 00190 m_event(p1, p2, p3); 00191 } 00192 00193 // 3 to 4 00194 template <typename TP1, typename TP2, typename TP3, typename TP4> 00195 void operator()( TP1 p1, TP2 p2, TP3 p3, TP4 p4 ) 00196 { 00197 m_eventObsolete(p1, p2, p3); 00198 m_event(p1, p2, p3, p4); 00199 } 00200 00201 bool empty() const 00202 { 00203 return m_eventObsolete.empty() && m_event.empty(); 00204 } 00205 00206 public: 00207 EventObsolete m_eventObsolete; 00208 Event m_event; 00209 }; 00210 00211 } // namespace MyGUI 00212 00213 #endif // __MYGUI_EVENT_PAIR_H__