MyGUI  3.2.1
MyGUI_EventPair.h
Go to the documentation of this file.
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__