summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/delegate.h
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2011-05-05 05:31:17 +0000
committer Aaron Giles <aaron@aarongiles.com>2011-05-05 05:31:17 +0000
commit61778d49558e6d39b3b4f5c928514704d91a1863 (patch)
tree8b7a39f140fa64c8ad852122f425bb9cd1978fa9 /src/emu/delegate.h
parent90184e8b79cd2064d48fcd888f467fc884b7aba3 (diff)
Remove legacy trampolines in the 7474 device and fix
some undefined behavior in the process. Should fix reported issues in systems using the 7474.
Diffstat (limited to 'src/emu/delegate.h')
-rw-r--r--src/emu/delegate.h40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/emu/delegate.h b/src/emu/delegate.h
index bd7d4035d5d..08eb01ff1c2 100644
--- a/src/emu/delegate.h
+++ b/src/emu/delegate.h
@@ -145,7 +145,7 @@ class delegate_generic_class;
// delegate_traits is a meta-template that is used to provide a static function pointer
// and member function pointer of the appropriate type and number of parameters; we use
// partial template specialization to support fewer parameters by defaulting the later
-// parameters to the special type delegate_param_none
+// parameters to the special type _noparam
template<typename _ClassType, typename _ReturnType, typename _P1Type, typename _P2Type, typename _P3Type, typename _P4Type>
struct delegate_traits
{
@@ -155,11 +155,11 @@ struct delegate_traits
};
// dummy class used to indicate a non-existant parameter
-class delegate_param_none { };
+class _noparam { };
// specialization for 3 parameters
template<typename _ClassType, typename _ReturnType, typename _P1Type, typename _P2Type, typename _P3Type>
-struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, _P3Type, delegate_param_none>
+struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, _P3Type, _noparam>
{
typedef _ReturnType (*static_func_type)(_ClassType *, _P1Type, _P2Type, _P3Type);
typedef _ReturnType (*static_ref_func_type)(_ClassType &, _P1Type, _P2Type, _P3Type);
@@ -168,7 +168,7 @@ struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, _P3Type, deleg
// specialization for 2 parameters
template<typename _ClassType, typename _ReturnType, typename _P1Type, typename _P2Type>
-struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, delegate_param_none, delegate_param_none>
+struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, _noparam, _noparam>
{
typedef _ReturnType (*static_func_type)(_ClassType *, _P1Type, _P2Type);
typedef _ReturnType (*static_ref_func_type)(_ClassType &, _P1Type, _P2Type);
@@ -177,7 +177,7 @@ struct delegate_traits<_ClassType, _ReturnType, _P1Type, _P2Type, delegate_param
// specialization for 1 parameter
template<typename _ClassType, typename _ReturnType, typename _P1Type>
-struct delegate_traits<_ClassType, _ReturnType, _P1Type, delegate_param_none, delegate_param_none, delegate_param_none>
+struct delegate_traits<_ClassType, _ReturnType, _P1Type, _noparam, _noparam, _noparam>
{
typedef _ReturnType (*static_func_type)(_ClassType *, _P1Type);
typedef _ReturnType (*static_ref_func_type)(_ClassType &, _P1Type);
@@ -186,7 +186,7 @@ struct delegate_traits<_ClassType, _ReturnType, _P1Type, delegate_param_none, de
// specialization for no parameters
template<typename _ClassType, typename _ReturnType>
-struct delegate_traits<_ClassType, _ReturnType, delegate_param_none, delegate_param_none, delegate_param_none, delegate_param_none>
+struct delegate_traits<_ClassType, _ReturnType, _noparam, _noparam, _noparam, _noparam>
{
typedef _ReturnType (*static_func_type)(_ClassType *);
typedef _ReturnType (*static_ref_func_type)(_ClassType &);
@@ -251,7 +251,7 @@ struct delegate_raw_mfp
// ======================> delegate
// general delegate class template supporting up to 4 parameters
-template<typename _ReturnType, typename _P1Type = delegate_param_none, typename _P2Type = delegate_param_none, typename _P3Type = delegate_param_none, typename _P4Type = delegate_param_none>
+template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam>
class delegate_base
{
typedef typename delegate_traits<delegate_generic_class, _ReturnType, _P1Type, _P2Type, _P3Type, _P4Type>::static_func_type generic_static_func;
@@ -485,7 +485,7 @@ struct delegate_internal_mfp
// ======================> delegate
-template<typename _ReturnType, typename _P1Type = delegate_param_none, typename _P2Type = delegate_param_none, typename _P3Type = delegate_param_none, typename _P4Type = delegate_param_none>
+template<typename _ReturnType, typename _P1Type = _noparam, typename _P2Type = _noparam, typename _P3Type = _noparam, typename _P4Type = _noparam>
class delegate_base
{
typedef typename delegate_traits<delegate_generic_class, _ReturnType, _P1Type, _P2Type, _P3Type, _P4Type>::static_func_type generic_static_func;
@@ -621,9 +621,9 @@ public:
delegate() : basetype() { }
delegate(const basetype &src) : basetype(src) { }
template<class _FunctionClass> delegate(const basetype &src, _FunctionClass *object) : basetype(src, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, delegate_param_none, delegate_param_none, delegate_param_none, delegate_param_none>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, delegate_param_none, delegate_param_none, delegate_param_none, delegate_param_none>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, delegate_param_none, delegate_param_none, delegate_param_none, delegate_param_none>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _noparam, _noparam, _noparam, _noparam>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _noparam, _noparam, _noparam, _noparam>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _noparam, _noparam, _noparam, _noparam>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
};
@@ -636,9 +636,9 @@ public:
delegate() : basetype() { }
delegate(const basetype &src) : basetype(src) { }
template<class _FunctionClass> delegate(const basetype &src, _FunctionClass *object) : basetype(src, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, delegate_param_none, delegate_param_none, delegate_param_none>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, delegate_param_none, delegate_param_none, delegate_param_none>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, delegate_param_none, delegate_param_none, delegate_param_none>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _noparam, _noparam, _noparam>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _noparam, _noparam, _noparam>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _noparam, _noparam, _noparam>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
};
@@ -651,9 +651,9 @@ public:
delegate() : basetype() { }
delegate(const basetype &src) : basetype(src) { }
template<class _FunctionClass> delegate(const basetype &src, _FunctionClass *object) : basetype(src, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, delegate_param_none, delegate_param_none>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, delegate_param_none, delegate_param_none>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, delegate_param_none, delegate_param_none>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _noparam, _noparam>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _noparam, _noparam>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _noparam, _noparam>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
};
@@ -666,9 +666,9 @@ public:
delegate() : basetype() { }
delegate(const basetype &src) : basetype(src) { }
template<class _FunctionClass> delegate(const basetype &src, _FunctionClass *object) : basetype(src, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, delegate_param_none>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, delegate_param_none>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
- template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, delegate_param_none>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, _noparam>::member_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, _noparam>::static_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
+ template<class _FunctionClass> delegate(typename delegate_traits<_FunctionClass, _ReturnType, _P1Type, _P2Type, _P3Type, _noparam>::static_ref_func_type funcptr, const char *name, _FunctionClass *object) : basetype(funcptr, name, object) { }
delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; }
};