mirror of
https://onedev.site.tesses.net/crosslang
synced 2026-04-18 08:57:04 +00:00
Fix for tessesframework migration
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user