mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Allow the self object to be specified
This commit is contained in:
parent
e37a5f4d06
commit
033b76af14
2 changed files with 29 additions and 17 deletions
|
@ -29,11 +29,11 @@ ScriptRegisteredDelegate_Script::ScriptRegisteredDelegate_Script(const ScriptThr
|
|||
: label(inLabel)
|
||||
{}
|
||||
|
||||
void ScriptRegisteredDelegate_Script::Execute(const Event& ev)
|
||||
void ScriptRegisteredDelegate_Script::Execute(Listener *object, const Event& ev)
|
||||
{
|
||||
Event newev = ev;
|
||||
|
||||
label.Execute(NULL, newev);
|
||||
label.Execute(object, newev);
|
||||
}
|
||||
|
||||
bool ScriptRegisteredDelegate_Script::operator==(const ScriptRegisteredDelegate_Script& registeredDelegate) const
|
||||
|
@ -48,13 +48,13 @@ ScriptRegisteredDelegate_CodeMember::ScriptRegisteredDelegate_CodeMember(
|
|||
, response(inResponse)
|
||||
{}
|
||||
|
||||
void ScriptRegisteredDelegate_CodeMember::Execute(const Event& ev)
|
||||
void ScriptRegisteredDelegate_CodeMember::Execute(Listener *object, const Event& ev)
|
||||
{
|
||||
if (!object) {
|
||||
return;
|
||||
}
|
||||
|
||||
(object->*response)(ev);
|
||||
(object->*response)(object, ev);
|
||||
}
|
||||
|
||||
bool ScriptRegisteredDelegate_CodeMember::operator==(const ScriptRegisteredDelegate_CodeMember& registeredDelegate
|
||||
|
@ -67,9 +67,9 @@ ScriptRegisteredDelegate_Code::ScriptRegisteredDelegate_Code(DelegateResponse in
|
|||
: response(inResponse)
|
||||
{}
|
||||
|
||||
void ScriptRegisteredDelegate_Code::Execute(const Event& ev)
|
||||
void ScriptRegisteredDelegate_Code::Execute(Listener *object, const Event& ev)
|
||||
{
|
||||
(*response)(ev);
|
||||
(*response)(object, ev);
|
||||
}
|
||||
|
||||
bool ScriptRegisteredDelegate_Code::operator==(const ScriptRegisteredDelegate_Code& registeredDelegate) const
|
||||
|
@ -134,27 +134,32 @@ void ScriptDelegate::Unregister(Class *object, ScriptRegisteredDelegate_CodeMemb
|
|||
}
|
||||
|
||||
void ScriptDelegate::Trigger(const Event& ev) const
|
||||
{
|
||||
Trigger(NULL, ev);
|
||||
}
|
||||
|
||||
void ScriptDelegate::Trigger(Listener *object, const Event& ev) const
|
||||
{
|
||||
size_t i;
|
||||
|
||||
{
|
||||
const Container<ScriptRegisteredDelegate_Script> tmpList = list_script;
|
||||
for (i = 1; i <= tmpList.NumObjects(); i++) {
|
||||
tmpList.ObjectAt(i).Execute(ev);
|
||||
tmpList.ObjectAt(i).Execute(object, ev);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const Container<ScriptRegisteredDelegate_Code> tmpList = list_code;
|
||||
for (i = 1; i <= tmpList.NumObjects(); i++) {
|
||||
tmpList.ObjectAt(i).Execute(ev);
|
||||
tmpList.ObjectAt(i).Execute(object, ev);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const Container<ScriptRegisteredDelegate_CodeMember> tmpList = list_codeMember;
|
||||
for (i = 1; i <= tmpList.NumObjects(); i++) {
|
||||
tmpList.ObjectAt(i).Execute(ev);
|
||||
tmpList.ObjectAt(i).Execute(object, ev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -179,7 +184,7 @@ void ScriptDelegate::Reset()
|
|||
|
||||
void ScriptDelegate::ResetAllDelegates()
|
||||
{
|
||||
for (ScriptDelegate* delegate = root; delegate; delegate = delegate->next) {
|
||||
for (ScriptDelegate *delegate = root; delegate; delegate = delegate->next) {
|
||||
delegate->Reset();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
class ScriptRegisteredDelegate
|
||||
{
|
||||
public:
|
||||
void Execute(const Event& ev);
|
||||
void Execute(Listener *object, const Event& ev);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -41,7 +41,7 @@ class ScriptRegisteredDelegate_Script : public ScriptRegisteredDelegate
|
|||
public:
|
||||
ScriptRegisteredDelegate_Script(const ScriptThreadLabel& inLabel);
|
||||
|
||||
void Execute(const Event& ev);
|
||||
void Execute(Listener *object, const Event& ev);
|
||||
|
||||
bool operator==(const ScriptRegisteredDelegate_Script& registeredDelegate) const;
|
||||
|
||||
|
@ -56,12 +56,12 @@ private:
|
|||
class ScriptRegisteredDelegate_Code : public ScriptRegisteredDelegate
|
||||
{
|
||||
public:
|
||||
using DelegateResponse = void (*)(const Event& ev);
|
||||
using DelegateResponse = void (*)(Listener *object, const Event& ev);
|
||||
|
||||
public:
|
||||
ScriptRegisteredDelegate_Code(DelegateResponse inResponse);
|
||||
|
||||
void Execute(const Event& ev);
|
||||
void Execute(Listener *object, const Event& ev);
|
||||
|
||||
bool operator==(const ScriptRegisteredDelegate_Code& registeredDelegate) const;
|
||||
|
||||
|
@ -77,12 +77,12 @@ private:
|
|||
class ScriptRegisteredDelegate_CodeMember : public ScriptRegisteredDelegate
|
||||
{
|
||||
public:
|
||||
using DelegateClassResponse = void (Class::*)(const Event& ev);
|
||||
using DelegateClassResponse = void (Class::*)(Listener *object, const Event& ev);
|
||||
|
||||
public:
|
||||
ScriptRegisteredDelegate_CodeMember(Class *inObject, DelegateClassResponse inResponse);
|
||||
|
||||
void Execute(const Event& ev);
|
||||
void Execute(Listener *object, const Event& ev);
|
||||
|
||||
bool operator==(const ScriptRegisteredDelegate_CodeMember& registeredDelegate) const;
|
||||
|
||||
|
@ -156,6 +156,13 @@ public:
|
|||
*/
|
||||
void Trigger(const Event& ev) const;
|
||||
|
||||
/**
|
||||
* Executes all registered delegates with the specified event.
|
||||
*
|
||||
* @param ev Parameter list
|
||||
*/
|
||||
void Trigger(Listener *object, const Event& ev) const;
|
||||
|
||||
/**
|
||||
* Reset the delegate, unregister callbacks.
|
||||
*/
|
||||
|
@ -167,7 +174,7 @@ public:
|
|||
* @param name The name to search for
|
||||
*/
|
||||
static ScriptDelegate *GetScriptDelegate(const char *name);
|
||||
static void ResetAllDelegates();
|
||||
static void ResetAllDelegates();
|
||||
|
||||
// non-movable and non-copyable
|
||||
ScriptDelegate(ScriptDelegate&& other) = delete;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue