From 45d3bc690b3b876583976129ae4969b2db12934b Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 14 Sep 2019 10:19:56 +0200 Subject: [PATCH] Extern C support for registering function overloads --- src/ScriptTypes/ScriptType.cpp | 11 +++++++++++ src/UserData/UserDataFunction.cpp | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/ScriptTypes/ScriptType.cpp b/src/ScriptTypes/ScriptType.cpp index f2f731e..aebc1bf 100644 --- a/src/ScriptTypes/ScriptType.cpp +++ b/src/ScriptTypes/ScriptType.cpp @@ -110,6 +110,17 @@ namespace Porygon{ return type; } + ScriptType* RegisterUserDataFunctionScriptTypeOption(GenericFunctionScriptType* existing, ScriptType* returnType, + ScriptType* parameters[], size_t parameterCount){ + vector> vector(parameterCount); + for (size_t i = 0; i < parameterCount; i++){ + vector[i] = shared_ptr(parameters[i]); + } + auto option = new UserData::UserDataFunctionOption(shared_ptr(returnType), vector); + existing->RegisterFunctionOption(option); + return existing; + } + TypeClass GetTypeClass(ScriptType* t){ return t->GetClass(); } diff --git a/src/UserData/UserDataFunction.cpp b/src/UserData/UserDataFunction.cpp index 937c81b..b3501df 100644 --- a/src/UserData/UserDataFunction.cpp +++ b/src/UserData/UserDataFunction.cpp @@ -13,5 +13,11 @@ namespace Porygon::UserData{ t->RegisterOption(opt); return t; } + + void RegisterFunctionEvalValueOption(const GenericFunctionEvalValue* val, + const Evaluation::EvalValue* (*func)(void*, const ScriptOptions*, const EvalValue* [], int ), void* obj){ + auto opt = new UserDataFunction(func, obj); + val->RegisterOption(opt); + } } }