Removed CallbackAction and CallbackEvent for moving to C# library in future
This commit is contained in:
parent
4958240806
commit
5ff375113f
|
@ -1,48 +0,0 @@
|
||||||
/************************************************************************************//*!
|
|
||||||
\file CallbackAction.cxx
|
|
||||||
\author Tng Kah Wei, kahwei.tng, 390009620
|
|
||||||
\par email: kahwei.tng\@digipen.edu
|
|
||||||
\date Sep 20, 2022
|
|
||||||
\brief Contains the definition of the functions for the CallbackAction managed
|
|
||||||
class.
|
|
||||||
|
|
||||||
Note: This file is written in C++17/CLI.
|
|
||||||
|
|
||||||
Copyright (C) 2021 DigiPen Institute of Technology.
|
|
||||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
|
||||||
of DigiPen Institute of Technology is prohibited.
|
|
||||||
*//*************************************************************************************/
|
|
||||||
// Precompiled Headers
|
|
||||||
#include "SHpch.h"
|
|
||||||
// Primary Header
|
|
||||||
#include "CallbackAction.hxx"
|
|
||||||
|
|
||||||
namespace SHADE
|
|
||||||
{
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
/* Constructors */
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
generic<typename T1>
|
|
||||||
CallbackAction<T1>::CallbackAction(System::Reflection::MethodInfo^ method)
|
|
||||||
: CallbackAction(method, nullptr)
|
|
||||||
{}
|
|
||||||
generic<typename T1>
|
|
||||||
CallbackAction<T1>::CallbackAction(System::Reflection::MethodInfo^ method, System::Object^ obj)
|
|
||||||
: method { method }
|
|
||||||
, object { obj }
|
|
||||||
{
|
|
||||||
paramArray = gcnew cli::array<System::Object^>(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
/* Usage Functions */
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackAction<T1>::Invoke(T1 param1)
|
|
||||||
{
|
|
||||||
// Set parameters
|
|
||||||
paramArray[0] = safe_cast<System::Object^>(param1);
|
|
||||||
// Invoke
|
|
||||||
method->Invoke(object, paramArray);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
/************************************************************************************//*!
|
|
||||||
\file CallbackAction.hxx
|
|
||||||
\author Tng Kah Wei, kahwei.tng, 390009620
|
|
||||||
\par email: kahwei.tng\@digipen.edu
|
|
||||||
\date Sep 20, 2021
|
|
||||||
\brief Contains the definition of the managed CallbackAction class.
|
|
||||||
|
|
||||||
Note: This file is written in C++17/CLI.
|
|
||||||
|
|
||||||
Copyright (C) 2022 DigiPen Institute of Technology.
|
|
||||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
|
||||||
of DigiPen Institute of Technology is prohibited.
|
|
||||||
*//*************************************************************************************/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace SHADE
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Holds a function and their associated object for invoking later.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T1">Type of the first parameter.</typeparam>
|
|
||||||
generic<typename T1>
|
|
||||||
public ref class CallbackAction
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Constructors */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/// <summary>
|
|
||||||
/// Constructs a CallbackAction with the specified static method.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="method">MethodInfo representing the method to call.</param>
|
|
||||||
/// <param name="obj">Object to call the method on. Set null if static.</param>
|
|
||||||
CallbackAction(System::Reflection::MethodInfo^ method);
|
|
||||||
/// <summary>
|
|
||||||
/// Constructs a CallbackAction with the specified instance method and object
|
|
||||||
/// which will invoke the method.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="method">MethodInfo representing the method to call.</param>
|
|
||||||
/// <param name="obj">Object to call the method on.</param>
|
|
||||||
CallbackAction(System::Reflection::MethodInfo^ method, System::Object^ obj);
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Usage Functions */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/// <summary>
|
|
||||||
/// Invokes this action with the specified parameters.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="param1"></param>
|
|
||||||
void Invoke(T1 param1);
|
|
||||||
|
|
||||||
private:
|
|
||||||
System::Reflection::MethodInfo^ method;
|
|
||||||
cli::array<System::Object^>^ paramArray;
|
|
||||||
System::Object^ object;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
/************************************************************************************//*!
|
|
||||||
\file CallbackEvent.cxx
|
|
||||||
\author Tng Kah Wei, kahwei.tng, 390009620
|
|
||||||
\par email: kahwei.tng\@digipen.edu
|
|
||||||
\date Sep 20, 2022
|
|
||||||
\brief Contains the definition of the functions for the CallbackEvent managed
|
|
||||||
class.
|
|
||||||
|
|
||||||
Note: This file is written in C++17/CLI.
|
|
||||||
|
|
||||||
Copyright (C) 2021 DigiPen Institute of Technology.
|
|
||||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
|
||||||
of DigiPen Institute of Technology is prohibited.
|
|
||||||
*//*************************************************************************************/
|
|
||||||
// Precompiled Headers
|
|
||||||
#include "SHpch.h"
|
|
||||||
// Primary Header
|
|
||||||
#include "CallbackEvent.hxx"
|
|
||||||
|
|
||||||
namespace SHADE
|
|
||||||
{
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
/* Constructors */
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
generic<typename T1>
|
|
||||||
CallbackEvent<T1>::CallbackEvent()
|
|
||||||
{
|
|
||||||
actions = gcnew System::Collections::Generic::List<CallbackAction<T1> ^>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
/* Properties */
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
generic<typename T1>
|
|
||||||
System::Collections::Generic::IEnumerable<CallbackAction<T1>^>^ CallbackEvent<T1>::Actions::get()
|
|
||||||
{
|
|
||||||
return actions;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
/* Usage Functions */
|
|
||||||
/*---------------------------------------------------------------------------------*/
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackEvent<T1>::AddAction(CallbackAction<T1>^ action)
|
|
||||||
{
|
|
||||||
actions->Add(action);
|
|
||||||
}
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackEvent<T1>::AddAction(System::Reflection::MethodInfo^ method)
|
|
||||||
{
|
|
||||||
actions->Add(gcnew CallbackAction<T1>(method));
|
|
||||||
}
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackEvent<T1>::AddAction(System::Reflection::MethodInfo^ method, System::Object^ object)
|
|
||||||
{
|
|
||||||
actions->Add(gcnew CallbackAction<T1>(method, object));
|
|
||||||
}
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackEvent<T1>::RemoveAction(CallbackAction<T1>^ action)
|
|
||||||
{
|
|
||||||
actions->Remove(action);
|
|
||||||
}
|
|
||||||
generic<typename T1>
|
|
||||||
void CallbackEvent<T1>::Invoke(T1 param1)
|
|
||||||
{
|
|
||||||
for each (CallbackAction<T1>^ action in actions)
|
|
||||||
{
|
|
||||||
action->Invoke(param1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,85 +0,0 @@
|
||||||
/************************************************************************************//*!
|
|
||||||
\file CallbackEvent.hxx
|
|
||||||
\author Tng Kah Wei, kahwei.tng, 390009620
|
|
||||||
\par email: kahwei.tng\@digipen.edu
|
|
||||||
\date Sep 20, 2021
|
|
||||||
\brief Contains the definition of the managed CallbackEvent class.
|
|
||||||
|
|
||||||
Note: This file is written in C++17/CLI.
|
|
||||||
|
|
||||||
Copyright (C) 2022 DigiPen Institute of Technology.
|
|
||||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
|
||||||
of DigiPen Institute of Technology is prohibited.
|
|
||||||
*//*************************************************************************************/
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CallbackAction.hxx"
|
|
||||||
|
|
||||||
namespace SHADE
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Holds a set of CallbackActions that can be invoked together at a later time.
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="T1">Type of the first parameter.</typeparam>
|
|
||||||
generic<typename T1>
|
|
||||||
public ref class CallbackEvent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Constructors */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/// <summary>
|
|
||||||
/// Default Constructor
|
|
||||||
/// </summary>
|
|
||||||
CallbackEvent();
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Properties */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/// <summary>
|
|
||||||
/// Read only access to the list of Actions
|
|
||||||
/// </summary>
|
|
||||||
property System::Collections::Generic::IEnumerable<CallbackAction<T1>^>^ Actions
|
|
||||||
{
|
|
||||||
System::Collections::Generic::IEnumerable<CallbackAction<T1>^>^ get();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Usage Functions */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/// <summary>
|
|
||||||
/// Adds the specified CallbackAction to the CallbackEvent.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="action">CallbackAction to add.</param>
|
|
||||||
void AddAction(CallbackAction<T1>^ action);
|
|
||||||
/// <summary>
|
|
||||||
/// Adds a specified static method as a CallbackAction to the CallbackEvent.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="method">Method to add.</param>
|
|
||||||
void AddAction(System::Reflection::MethodInfo^ method);
|
|
||||||
/// <summary>
|
|
||||||
/// Adds a specified instance method and associated object as a CallbackAction to
|
|
||||||
/// the CallbackEvent.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="method">Method to add.</param>
|
|
||||||
/// <param name="object">Object that will call the specified method.</param>
|
|
||||||
void AddAction(System::Reflection::MethodInfo^ method, System::Object^ object);
|
|
||||||
/// <summary>
|
|
||||||
/// Removes the specified CallbackAction from the CallbackEvent.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="">CallbackAction to remove.</param>
|
|
||||||
void RemoveAction(CallbackAction<T1>^ action);
|
|
||||||
/// <summary>
|
|
||||||
/// Invokes all CallbackActions registered with this CallbackEvent with the
|
|
||||||
/// specified parameters.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="param1"></param>
|
|
||||||
void Invoke(T1 param1);
|
|
||||||
|
|
||||||
private:
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
/* Data Members */
|
|
||||||
/*-----------------------------------------------------------------------------*/
|
|
||||||
System::Collections::Generic::List<CallbackAction<T1>^>^ actions;
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue