Fix for tessesframework migration

This commit is contained in:
2025-07-03 16:18:29 -05:00
parent 7797b0b387
commit f5e17217dd
23 changed files with 789 additions and 273625 deletions

View File

@@ -8,16 +8,7 @@
#include <unistd.h>
#endif
#if defined(CROSSLANG_ENABLE_SQLITE)
extern "C" {
#include "../sqlite/sqlite3.h"
}
#if defined(GEKKO) || defined(__SWITCH__)
extern "C" {
sqlite3_vfs *sqlite3_demovfs();
}
#endif
#endif
using namespace Tesses::Framework::Threading;
using namespace std::chrono;
namespace Tesses::CrossLang
@@ -32,13 +23,12 @@ namespace Tesses::CrossLang
}
GC::GC()
{
tzset();
#if defined(CROSSLANG_ENABLE_SQLITE)
sqlite3_initialize();
#if defined(GEKKO) || defined(__SWITCH__)
sqlite3_vfs_register(sqlite3_demovfs(),1);
#endif
#endif
this->tpool=new Tesses::Framework::Lazy<Tesses::Framework::Threading::ThreadPool*>([]()->Tesses::Framework::Threading::ThreadPool*{
auto threads = Tesses::Framework::Threading::ThreadPool::GetNumberOfCores();
if(threads < 4) threads=4;
return new Tesses::Framework::Threading::ThreadPool(threads);
},[](Tesses::Framework::Threading::ThreadPool* p)->void{delete p;});
}
TDictionary* CreateThread(GCList& ls, TCallable* callable,bool detached)
{
@@ -206,6 +196,10 @@ namespace Tesses::CrossLang
this->BarrierEnd();
}
}
Tesses::Framework::Threading::ThreadPool* GC::GetPool()
{
return this->tpool->GetValue();
}
void GC::UnsetRoot(TObject obj)
{
if(std::holds_alternative<THeapObjectHolder>(obj))
@@ -234,6 +228,7 @@ namespace Tesses::CrossLang
delete this->thrd;
for(auto item : objects) delete item;
delete this->mtx;
delete this->tpool;
}
void GC::RegisterEverythingCallback(std::function<void(GC* gc, TRootEnvironment* env)> cb)

View File

@@ -3150,6 +3150,28 @@ namespace Tesses::CrossLang {
auto natObj = dynamic_cast<TNativeObject*>(obj);
auto cls = dynamic_cast<TClassObject*>(obj);
auto aArray=dynamic_cast<TAssociativeArray*>(obj);
auto ttask = dynamic_cast<TTask*>(obj);
if(ttask != nullptr)
{
if(key == "ContinueWith")
{
TCallable* callable2;
if(GetArgumentHeap(args,0,callable2))
{
cse.back()->Push(gc,ttask->ContinueWith(ls,callable2));
return false;
}
}
if(key == "Wait")
{
cse.back()->Push(gc,ttask->Wait());
return false;
}
cse.back()->Push(gc,Undefined());
return false;
}
if(natObj != nullptr)
{
@@ -3321,6 +3343,20 @@ namespace Tesses::CrossLang {
cse.back()->Push(gc,nullptr);
return false;
}
if(key == "RegisterClass")
{
if((myEnv->permissions.canRegisterEverything || myEnv->permissions.canRegisterClass) && !rootEnv->permissions.locked)
TStd::RegisterClass(gc, rootEnv);
cse.back()->Push(gc,nullptr);
return false;
}
if(key == "RegisterSDL2")
{
if((myEnv->permissions.canRegisterEverything || myEnv->permissions.canRegisterSDL2)&& !rootEnv->permissions.locked)
TStd::RegisterSDL2(gc, rootEnv);
cse.back()->Push(gc,nullptr);
return false;
}
if(key == "RegisterConsole")
{
if((myEnv->permissions.canRegisterEverything || myEnv->permissions.canRegisterConsole) && !rootEnv->permissions.locked)
@@ -5191,6 +5227,17 @@ namespace Tesses::CrossLang {
auto natObj = dynamic_cast<TNativeObject*>(obj);
auto cls = dynamic_cast<TClassObject*>(obj);
auto aarray = dynamic_cast<TAssociativeArray*>(obj);
auto task = dynamic_cast<TTask*>(obj);
if(task != nullptr)
{
if(key == "IsCompleted")
{
cse.back()->Push(gc,task->IsCompleted());
return false;
}
cse.back()->Push(gc,Undefined());
return false;
}
if(aarray != nullptr)
{
if(key == "Count" || key == "Length")