git: Remove fastdelegate headers
This commit is contained in:
parent
c6090033cc
commit
74486d6223
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#ifndef _FASTDELEGATE_H
|
|
||||||
#define _FASTDELEGATE_H
|
|
||||||
|
|
||||||
#include "delegate.hpp"
|
|
||||||
#include "signal.hpp"
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,557 +0,0 @@
|
|||||||
/**
|
|
||||||
* Signal.hpp
|
|
||||||
*
|
|
||||||
* A lightweight signals and slots implementation using fast delegates
|
|
||||||
*
|
|
||||||
* Created by Patrick Hogan on 5/18/09.
|
|
||||||
*/
|
|
||||||
#pragma once
|
|
||||||
#ifndef _SIGNAL_H_
|
|
||||||
#define _SIGNAL_H_
|
|
||||||
|
|
||||||
#include "delegate.hpp"
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
namespace delegate
|
|
||||||
{
|
|
||||||
template< class Param0 = void >
|
|
||||||
class Signal0
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate0< void > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)() ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)() const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)() ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)() const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit() const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() () const {
|
|
||||||
emit();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1 >
|
|
||||||
class Signal1
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate1< Param1 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1) const {
|
|
||||||
emit(p1);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2 >
|
|
||||||
class Signal2
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate2< Param1, Param2 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2) const {
|
|
||||||
emit(p1, p2);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3 >
|
|
||||||
class Signal3
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate3< Param1, Param2, Param3 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3) const {
|
|
||||||
emit(p1, p2, p3);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3, class Param4 >
|
|
||||||
class Signal4
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate4< Param1, Param2, Param3, Param4 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3, p4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4) const {
|
|
||||||
emit(p1, p2, p3, p4);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3, class Param4, class Param5 >
|
|
||||||
class Signal5
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate5< Param1, Param2, Param3, Param4, Param5 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3, p4, p5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const {
|
|
||||||
emit(p1, p2, p3, p4, p5);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3, class Param4, class Param5, class Param6 >
|
|
||||||
class Signal6
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate6< Param1, Param2, Param3, Param4, Param5, Param6 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3, p4, p5, p6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const {
|
|
||||||
emit(p1, p2, p3, p4, p5, p6);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7 >
|
|
||||||
class Signal7
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate7< Param1, Param2, Param3, Param4, Param5, Param6, Param7 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3, p4, p5, p6, p7);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const {
|
|
||||||
emit(p1, p2, p3, p4, p5, p6, p7);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template< class Param1, class Param2, class Param3, class Param4, class Param5, class Param6, class Param7, class Param8 >
|
|
||||||
class Signal8
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef Delegate8< Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8 > _Delegate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::set<_Delegate> DelegateList;
|
|
||||||
typedef typename DelegateList::const_iterator DelegateIterator;
|
|
||||||
DelegateList delegateList;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void connect(_Delegate delegate) {
|
|
||||||
delegateList.insert(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void connect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const ) {
|
|
||||||
delegateList.insert(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void disconnect(_Delegate delegate) {
|
|
||||||
delegateList.erase(delegate);
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
template< class X, class Y >
|
|
||||||
void disconnect(Y * obj, void (X::*fun)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const ) {
|
|
||||||
delegateList.erase(MakeDelegate(obj, fun));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
delegateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void emit(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const {
|
|
||||||
for (DelegateIterator i = delegateList.begin(); i != delegateList.end(); ) {
|
|
||||||
(*(i++))(p1, p2, p3, p4, p5, p6, p7, p8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const {
|
|
||||||
emit(p1, p2, p3, p4, p5, p6, p7, p8);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool empty() const {
|
|
||||||
return delegateList.empty();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue
Block a user