Fix bug with classes, use slim exclusively, add package private data and change rehaul cmake configs
This commit is contained in:
@@ -1,54 +1,64 @@
|
||||
#include "CrossLang.hpp"
|
||||
namespace Tesses::CrossLang
|
||||
{
|
||||
TExternalMethod::TExternalMethod(std::function<TObject(GCList& ls, std::vector<TObject> args)> cb,std::string documentation, std::vector<std::string> argNames,std::function<void()> destroy)
|
||||
{
|
||||
|
||||
this->cb = cb;
|
||||
this->args = argNames;
|
||||
this->documentation = documentation;
|
||||
this->destroy = destroy;
|
||||
}
|
||||
TExternalMethod* TExternalMethod::Create(GCList& ls,std::string documentation,std::vector<std::string> argNames,std::function<TObject(GCList& ls, std::vector<TObject> args)> cb,std::function<void()> destroy)
|
||||
{
|
||||
auto gc = ls.GetGC();
|
||||
TExternalMethod* method = new TExternalMethod(cb,documentation,argNames,destroy);
|
||||
ls.Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod* TExternalMethod::Create(GCList* ls,std::string documentation, std::vector<std::string> argNames,std::function<TObject(GCList& ls, std::vector<TObject> args)> cb,std::function<void()> destroy)
|
||||
{
|
||||
auto gc = ls->GetGC();
|
||||
TExternalMethod* method = new TExternalMethod(cb,documentation,argNames,destroy);
|
||||
ls->Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod* TExternalMethod::Create(GCList& ls,std::string documentation, std::vector<std::string> argNames,std::function<TObject(GCList& ls, std::vector<TObject> args)> cb)
|
||||
{
|
||||
auto gc = ls.GetGC();
|
||||
TExternalMethod* method = new TExternalMethod(cb,documentation,argNames,[]()->void{});
|
||||
ls.Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod* TExternalMethod::Create(GCList* ls,std::string documentation, std::vector<std::string> argNames,std::function<TObject(GCList& ls, std::vector<TObject> args)> cb)
|
||||
{
|
||||
auto gc = ls->GetGC();
|
||||
TExternalMethod* method = new TExternalMethod(cb,documentation,argNames,[]()->void{});
|
||||
ls->Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TObject TExternalMethod::Call(GCList& ls, std::vector<TObject> args)
|
||||
{
|
||||
if(cb == nullptr) return Undefined();
|
||||
return this->cb(ls,args);
|
||||
}
|
||||
TExternalMethod::~TExternalMethod()
|
||||
{
|
||||
if(this->destroy != nullptr)
|
||||
namespace Tesses::CrossLang {
|
||||
TExternalMethod::TExternalMethod(
|
||||
std::function<TObject(GCList &ls, std::vector<TObject> args)> cb,
|
||||
std::string documentation, std::vector<std::string> argNames,
|
||||
std::function<void()> destroy) {
|
||||
|
||||
this->cb = cb;
|
||||
this->args = argNames;
|
||||
this->documentation = documentation;
|
||||
this->destroy = destroy;
|
||||
}
|
||||
TExternalMethod *TExternalMethod::Create(
|
||||
GCList &ls, std::string documentation, std::vector<std::string> argNames,
|
||||
std::function<TObject(GCList &ls, std::vector<TObject> args)> cb,
|
||||
std::function<void()> destroy) {
|
||||
auto gc = ls.GetGC();
|
||||
TExternalMethod *method =
|
||||
new TExternalMethod(cb, documentation, argNames, destroy);
|
||||
ls.Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod *TExternalMethod::Create(
|
||||
GCList *ls, std::string documentation, std::vector<std::string> argNames,
|
||||
std::function<TObject(GCList &ls, std::vector<TObject> args)> cb,
|
||||
std::function<void()> destroy) {
|
||||
auto gc = ls->GetGC();
|
||||
TExternalMethod *method =
|
||||
new TExternalMethod(cb, documentation, argNames, destroy);
|
||||
ls->Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod *TExternalMethod::Create(
|
||||
GCList &ls, std::string documentation, std::vector<std::string> argNames,
|
||||
std::function<TObject(GCList &ls, std::vector<TObject> args)> cb) {
|
||||
auto gc = ls.GetGC();
|
||||
TExternalMethod *method =
|
||||
new TExternalMethod(cb, documentation, argNames, []() -> void {});
|
||||
ls.Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TExternalMethod *TExternalMethod::Create(
|
||||
GCList *ls, std::string documentation, std::vector<std::string> argNames,
|
||||
std::function<TObject(GCList &ls, std::vector<TObject> args)> cb) {
|
||||
auto gc = ls->GetGC();
|
||||
TExternalMethod *method =
|
||||
new TExternalMethod(cb, documentation, argNames, []() -> void {});
|
||||
ls->Add(method);
|
||||
gc->Watch(method);
|
||||
return method;
|
||||
}
|
||||
TObject TExternalMethod::Call(GCList &ls, std::vector<TObject> args) {
|
||||
if (cb == nullptr)
|
||||
return Undefined();
|
||||
return this->cb(ls, args);
|
||||
}
|
||||
TExternalMethod::~TExternalMethod() {
|
||||
if (this->destroy != nullptr)
|
||||
this->destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace Tesses::CrossLang
|
||||
Reference in New Issue
Block a user