diff --git a/src/GlobalScriptOptions.cpp b/src/GlobalScriptOptions.cpp index 7ffbda2..e0934aa 100644 --- a/src/GlobalScriptOptions.cpp +++ b/src/GlobalScriptOptions.cpp @@ -5,8 +5,14 @@ std::streambuf* Porygon::GlobalScriptOptions::_printBuffer = std::cout.rdbuf(); std::ostream* Porygon::GlobalScriptOptions::_printStream = new std::ostream(Porygon::GlobalScriptOptions::_printBuffer); -static void DefaultPrint(const std::u16string& s){ +static void DefaultPrint(const char16_t* s){ Porygon::GlobalScriptOptions::GetPrintStream() << Porygon::Utilities::StringUtils::FromUTF8(s) << std::endl; } -void (*Porygon::GlobalScriptOptions::_print)(const std::u16string &) = DefaultPrint; +void (*Porygon::GlobalScriptOptions::_print)(const char16_t*) = DefaultPrint; + +extern "C"{ + void SetPrintFunc(void (*func)(const char16_t*)){ + Porygon::GlobalScriptOptions::SetPrintFunc(func); + } +} \ No newline at end of file diff --git a/src/GlobalScriptOptions.hpp b/src/GlobalScriptOptions.hpp index 54a0436..4857dea 100644 --- a/src/GlobalScriptOptions.hpp +++ b/src/GlobalScriptOptions.hpp @@ -5,15 +5,15 @@ namespace Porygon{ class GlobalScriptOptions{ - static void (*_print)(const std::u16string& s); + static void (*_print)(const char16_t* s); static std::streambuf* _printBuffer; static std::ostream* _printStream; public: - inline static void Print(const std::u16string& s){ + inline static void Print(const char16_t* s){ GlobalScriptOptions::_print(s); } - static void SetPrintFunc(void (*print)(const std::u16string&)){ + static void SetPrintFunc(void (*print)(const char16_t *)){ GlobalScriptOptions::_print = print; } diff --git a/src/StandardLibraries/BasicLibrary.hpp b/src/StandardLibraries/BasicLibrary.hpp index bbfaa7b..4f43cb2 100644 --- a/src/StandardLibraries/BasicLibrary.hpp +++ b/src/StandardLibraries/BasicLibrary.hpp @@ -36,7 +36,7 @@ namespace Porygon::StandardLibraries{ static Evaluation::EvalValue* _print(void*, Evaluation::EvalValue* parameters[], int parameterCount){ auto message = parameters[0]->EvaluateString(); - GlobalScriptOptions::Print(message); + GlobalScriptOptions::Print(message.c_str()); return new Evaluation::NilEvalValue(); }