#include "CrossLang.hpp" #include "TessesFramework/Serialization/BitConverter.hpp" #include "TessesFramework/Streams/ByteReader.hpp" #include "TessesFramework/Uuid.hpp" #include #include #include #include #include #include #include namespace Tesses::CrossLang { bool InterperterThread::InvokeTwo(GCList& ls, TObject fn, TObject left, TObject right) { if(std::holds_alternative(fn)) { auto obj = dynamic_cast(std::get(fn).obj); if(obj != nullptr) { auto closure = dynamic_cast(obj); if(closure != nullptr) { if(!closure->closure->args.empty() && closure->closure->args[0] == "this") { this->AddCallStackEntry(ls,closure,{left,right}); } else { this->AddCallStackEntry(ls,closure,{right}); } } else { this->call_stack_entries[this->call_stack_entries.size()-1]->Push(ls.GetGC(), obj->Call(ls,{right})); return false; } return true; } } return false; } }