diff --git a/Cpp/.gitignore b/Cpp/.gitignore index d1860aa..d495376 100644 --- a/Cpp/.gitignore +++ b/Cpp/.gitignore @@ -5,3 +5,4 @@ cmake-build-debug-visual-studio cmake-build-debug cmake-build-release-visual-studio cmake-build-release +.vs \ No newline at end of file diff --git a/Cpp/src/ArcscriptHelpers.h b/Cpp/src/ArcscriptHelpers.h index b33c8b3..0713a90 100755 --- a/Cpp/src/ArcscriptHelpers.h +++ b/Cpp/src/ArcscriptHelpers.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "ArcscriptOutputs.h" namespace Arcweave { @@ -33,9 +34,9 @@ class ArcscriptState { std::string currentElement; std::map visits; - void (*emit) (const char* eventName); + std::function(emit); - ArcscriptState(std::string elementId, std::map varValues, std::map _visits, void (*_emit) (const char* eventName)) { + ArcscriptState(std::string elementId, std::map varValues, std::map _visits, std::function _emit) { currentElement = elementId; variableValues = varValues; for(const auto var : variableValues) { diff --git a/Cpp/src/ArcscriptTranspiler.cpp b/Cpp/src/ArcscriptTranspiler.cpp index 9452e1e..62d9965 100755 --- a/Cpp/src/ArcscriptTranspiler.cpp +++ b/Cpp/src/ArcscriptTranspiler.cpp @@ -60,7 +60,7 @@ TranspilerOutput ArcscriptTranspiler::runScript(std::string code) { return result; } -UTranspilerOutput* runScriptExport(const char* code, const char* elId, UVariable* variables, size_t varLength, UVisit* visits, size_t visitsLength, void (*onEvent)(const char*)) +UTranspilerOutput* runScriptExport(const char* code, const char* elId, UVariable* variables, size_t varLength, UVisit* visits, size_t visitsLength, std::function onEvent) { Arcweave::TranspilerOutput transpilerOutput; diff --git a/Cpp/src/ArcscriptTranspiler.h b/Cpp/src/ArcscriptTranspiler.h index 4ce4126..ea00940 100755 --- a/Cpp/src/ArcscriptTranspiler.h +++ b/Cpp/src/ArcscriptTranspiler.h @@ -137,7 +137,7 @@ namespace Arcweave ArcscriptState state; - ArcscriptTranspiler(std::string elId, std::map initVars, std::map _visits, void (*onEvent)(const char*)) : state(elId, initVars, _visits, onEvent) { }; + ArcscriptTranspiler(std::string elId, std::map initVars, std::map _visits, std::function onEvent) : state(elId, initVars, _visits, onEvent) { }; /** * Runs the arcscript code and returns it's results. @@ -149,5 +149,5 @@ namespace Arcweave //ARCSCRIPTTRANSPILER_API UTranspilerOutput URunScript(char* code); }; }; -EXPORTED Arcweave::UTranspilerOutput* runScriptExport(const char* code, const char* elId, Arcweave::UVariable* variables, size_t varLength, Arcweave::UVisit* visits, size_t visitsLength, void (*onEvent)(const char*)); +EXPORTED Arcweave::UTranspilerOutput* runScriptExport(const char* code, const char* elId, Arcweave::UVariable* variables, size_t varLength, Arcweave::UVisit* visits, size_t visitsLength, std::function onEvent); EXPORTED void deallocateOutput(Arcweave::UTranspilerOutput* output);