Work on extern support for userdata functions
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <utility>
|
||||
#include "../Evaluator/EvalValues/ScriptFunctionEvalValue.hpp"
|
||||
#include "UserDataFunctionType.hpp"
|
||||
|
||||
namespace Porygon::UserData{
|
||||
class UserDataFunction : public Evaluation::GenericFunctionEvalValue {
|
||||
@@ -15,14 +16,18 @@ namespace Porygon::UserData{
|
||||
_obj = obj;
|
||||
}
|
||||
public:
|
||||
UserDataFunction(Evaluation::EvalValue* (*call)(void* obj, EvalValue* parameters[], int parameterCount), void* obj,
|
||||
shared_ptr<GenericFunctionScriptType> type) : GenericFunctionEvalValue(std::move(type), rand()){
|
||||
UserDataFunction(Evaluation::EvalValue* (*call)(void* obj, EvalValue* parameters[], int parameterCount), void* obj) :
|
||||
GenericFunctionEvalValue(make_shared<UserDataFunctionType>(nullptr, vector<shared_ptr<ScriptType>>{}), rand()){
|
||||
_call = call;
|
||||
_obj = obj;
|
||||
}
|
||||
|
||||
EvalValue* Call(EvalValue* parameters[], int parameterCount){
|
||||
return _call(_obj, parameters, parameterCount);
|
||||
try{
|
||||
return _call(_obj, parameters, parameterCount);
|
||||
} catch (...){
|
||||
throw Evaluation::EvaluationException("An error occurred while executing a userdata function.");
|
||||
}
|
||||
}
|
||||
|
||||
const shared_ptr<EvalValue> Clone() const final {
|
||||
|
||||
Reference in New Issue
Block a user