⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sigslot.h

📁 本人收集整理的一份c/c++跨平台网络库
💻 H
📖 第 1 页 / 共 5 页
字号:
			arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>& s)			: _signal_base<mt_policy>(s)		{			lock_block<mt_policy> lock(this);			typename connections_list::const_iterator it = s.m_connected_slots.begin();			typename connections_list::const_iterator itEnd = s.m_connected_slots.end();			while(it != itEnd)			{				(*it)->getdest()->signal_connect(this);				m_connected_slots.push_back((*it)->clone());				++it;			}		}		void slot_duplicate(const has_slots<mt_policy>* oldtarget, has_slots<mt_policy>* newtarget)		{			lock_block<mt_policy> lock(this);			typename connections_list::iterator it = m_connected_slots.begin();			typename connections_list::iterator itEnd = m_connected_slots.end();			while(it != itEnd)			{				if((*it)->getdest() == oldtarget)				{					m_connected_slots.push_back((*it)->duplicate(newtarget));				}				++it;			}		}		~_signal_base8()		{			disconnect_all();		}		void disconnect_all()		{			lock_block<mt_policy> lock(this);			typename connections_list::const_iterator it = m_connected_slots.begin();			typename connections_list::const_iterator itEnd = m_connected_slots.end();			while(it != itEnd)			{				(*it)->getdest()->signal_disconnect(this);				delete *it;				++it;			}			m_connected_slots.erase(m_connected_slots.begin(), m_connected_slots.end());		}#ifdef _DEBUG			bool connected(has_slots<mt_policy>* pclass)		{			lock_block<mt_policy> lock(this);			typename connections_list::const_iterator itNext, it = m_connected_slots.begin();			typename connections_list::const_iterator itEnd = m_connected_slots.end();			while(it != itEnd)			{				itNext = it;				++itNext;				if ((*it)->getdest() == pclass)					return true;				it = itNext;			}			return false;		}#endif		void disconnect(has_slots<mt_policy>* pclass)		{			lock_block<mt_policy> lock(this);			typename connections_list::iterator it = m_connected_slots.begin();			typename connections_list::iterator itEnd = m_connected_slots.end();			while(it != itEnd)			{				if((*it)->getdest() == pclass)				{					delete *it;					m_connected_slots.erase(it);					pclass->signal_disconnect(this);					return;				}				++it;			}		}		void slot_disconnect(has_slots<mt_policy>* pslot)		{			lock_block<mt_policy> lock(this);			typename connections_list::iterator it = m_connected_slots.begin();			typename connections_list::iterator itEnd = m_connected_slots.end();			while(it != itEnd)			{				typename connections_list::iterator itNext = it;				++itNext;				if((*it)->getdest() == pslot)				{					m_connected_slots.erase(it);					//			delete *it;				}				it = itNext;			}		}	protected:		connections_list m_connected_slots;   	};	template<class dest_type, class mt_policy>	class _connection0 : public _connection_base0<mt_policy>	{	public:		_connection0()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection0(dest_type* pobject, void (dest_type::*pmemfun)())		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base0<mt_policy>* clone()		{			return new _connection0<dest_type, mt_policy>(*this);		}		virtual _connection_base0<mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection0<dest_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit()		{			(m_pobject->*m_pmemfun)();		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)();	};	template<class dest_type, class arg1_type, class mt_policy>	class _connection1 : public _connection_base1<arg1_type, mt_policy>	{	public:		_connection1()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection1(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base1<arg1_type, mt_policy>* clone()		{			return new _connection1<dest_type, arg1_type, mt_policy>(*this);		}		virtual _connection_base1<arg1_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection1<dest_type, arg1_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1)		{			(m_pobject->*m_pmemfun)(a1);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type);	};	template<class dest_type, class arg1_type, class arg2_type, class mt_policy>	class _connection2 : public _connection_base2<arg1_type, arg2_type, mt_policy>	{	public:		_connection2()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection2(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base2<arg1_type, arg2_type, mt_policy>* clone()		{			return new _connection2<dest_type, arg1_type, arg2_type, mt_policy>(*this);		}		virtual _connection_base2<arg1_type, arg2_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection2<dest_type, arg1_type, arg2_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2)		{			(m_pobject->*m_pmemfun)(a1, a2);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type, class mt_policy>	class _connection3 : public _connection_base3<arg1_type, arg2_type, arg3_type, mt_policy>	{	public:		_connection3()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection3(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base3<arg1_type, arg2_type, arg3_type, mt_policy>* clone()		{			return new _connection3<dest_type, arg1_type, arg2_type, arg3_type, mt_policy>(*this);		}		virtual _connection_base3<arg1_type, arg2_type, arg3_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection3<dest_type, arg1_type, arg2_type, arg3_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3)		{			(m_pobject->*m_pmemfun)(a1, a2, a3);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type,	class arg4_type, class mt_policy>	class _connection4 : public _connection_base4<arg1_type, arg2_type,		arg3_type, arg4_type, mt_policy>	{	public:		_connection4()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection4(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type, arg4_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base4<arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>* clone()		{			return new _connection4<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>(*this);		}		virtual _connection_base4<arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection4<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, 			arg4_type a4)		{			(m_pobject->*m_pmemfun)(a1, a2, a3, a4);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type,			arg4_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type,	class arg4_type, class arg5_type, class mt_policy>	class _connection5 : public _connection_base5<arg1_type, arg2_type,		arg3_type, arg4_type, arg5_type, mt_policy>	{	public:		_connection5()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection5(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type, arg4_type, arg5_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base5<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, mt_policy>* clone()		{			return new _connection5<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, mt_policy>(*this);		}		virtual _connection_base5<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection5<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,			arg5_type a5)		{			(m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type,			arg5_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type,	class arg4_type, class arg5_type, class arg6_type, class mt_policy>	class _connection6 : public _connection_base6<arg1_type, arg2_type,		arg3_type, arg4_type, arg5_type, arg6_type, mt_policy>	{	public:		_connection6()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection6(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type, arg4_type, arg5_type, arg6_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base6<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, mt_policy>* clone()		{			return new _connection6<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, arg6_type, mt_policy>(*this);		}		virtual _connection_base6<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection6<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, arg6_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,			arg5_type a5, arg6_type a6)		{			(m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5, a6);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type,			arg5_type, arg6_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type,	class arg4_type, class arg5_type, class arg6_type, class arg7_type, class mt_policy>	class _connection7 : public _connection_base7<arg1_type, arg2_type,		arg3_type, arg4_type, arg5_type, arg6_type, arg7_type, mt_policy>	{	public:		_connection7()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection7(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, arg7_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base7<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, arg7_type, mt_policy>* clone()		{			return new _connection7<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, arg6_type, arg7_type, mt_policy>(*this);		}		virtual _connection_base7<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, arg7_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection7<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, arg6_type, arg7_type, mt_policy>((dest_type *)pnewdest, m_pmemfun);		}		virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,			arg5_type a5, arg6_type a6, arg7_type a7)		{			(m_pobject->*m_pmemfun)(a1, a2, a3, a4, a5, a6, a7);		}		virtual has_slots<mt_policy>* getdest() const		{			return m_pobject;		}	private:		dest_type* m_pobject;		void (dest_type::* m_pmemfun)(arg1_type, arg2_type, arg3_type, arg4_type,			arg5_type, arg6_type, arg7_type);	};	template<class dest_type, class arg1_type, class arg2_type, class arg3_type,	class arg4_type, class arg5_type, class arg6_type, class arg7_type, 	class arg8_type, class mt_policy>	class _connection8 : public _connection_base8<arg1_type, arg2_type,		arg3_type, arg4_type, arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>	{	public:		_connection8()		{			m_pobject = NULL;			m_pmemfun = NULL;		}		_connection8(dest_type* pobject, void (dest_type::*pmemfun)(arg1_type,			arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, 			arg7_type, arg8_type))		{			m_pobject = pobject;			m_pmemfun = pmemfun;		}		virtual _connection_base8<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>* clone()		{			return new _connection8<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 				arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>(*this);		}		virtual _connection_base8<arg1_type, arg2_type, arg3_type, arg4_type, 			arg5_type, arg6_type, arg7_type, arg8_type, mt_policy>* duplicate(has_slots<mt_policy>* pnewdest)		{			return new _connection8<dest_type, arg1_type, arg2_type, arg3_type, arg4_type, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -