mirror of
https://onedev.site.tesses.net/crosslang
synced 2026-02-09 01:25:45 +00:00
Add reflective variables and fields
This commit is contained in:
@@ -35,10 +35,10 @@ namespace Tesses::CrossLang {
|
||||
dict->SetValue("Type", "GetField");
|
||||
dict->SetValue("Key", key);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
return cb->Call(ls,{dict});
|
||||
return this->cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
void TDynamicDictionary::SetField(GCList& ls, std::string key, TObject value)
|
||||
TObject TDynamicDictionary::SetField(GCList& ls, std::string key, TObject value)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
@@ -46,7 +46,7 @@ namespace Tesses::CrossLang {
|
||||
dict->SetValue("Key", key);
|
||||
dict->SetValue("Value", value);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
cb->Call(ls,{dict});
|
||||
return this->cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
TObject TDynamicDictionary::CallMethod(GCList& ls, std::string name, std::vector<TObject> args)
|
||||
@@ -59,7 +59,7 @@ namespace Tesses::CrossLang {
|
||||
argVal->items = args;
|
||||
dict->SetValue("Arguments", argVal);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
return cb->Call(ls,{dict});
|
||||
return this->cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
TEnumerator* TDynamicDictionary::GetEnumerator(GCList& ls)
|
||||
@@ -70,7 +70,7 @@ namespace Tesses::CrossLang {
|
||||
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
return TEnumerator::CreateFromObject(ls,cb->Call(ls,{dict}));
|
||||
return TEnumerator::CreateFromObject(ls,this->cb->Call(ls,{dict}));
|
||||
}
|
||||
bool TDictionary::MethodExists(GCList& ls,std::string method)
|
||||
{
|
||||
@@ -90,7 +90,7 @@ namespace Tesses::CrossLang {
|
||||
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
auto res = cb->Call(ls,{dict});
|
||||
auto res = this->cb->Call(ls,{dict});
|
||||
bool r2;
|
||||
if(GetObject(res,r2)) return r2;
|
||||
return false;
|
||||
|
||||
@@ -38,6 +38,76 @@ namespace Tesses::CrossLang {
|
||||
if(GetObject(res,n)) return n;
|
||||
return 0;
|
||||
}
|
||||
TObject TDynamicList::Add(GCList& ls, TObject v)
|
||||
{
|
||||
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "Add");
|
||||
dict->SetValue("Value",v);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
return cb->Call(ls,{dict});
|
||||
|
||||
}
|
||||
TObject TDynamicList::Insert(GCList& ls, int64_t index, TObject v)
|
||||
{
|
||||
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "Insert");
|
||||
dict->SetValue("Index",index);
|
||||
dict->SetValue("Value",v);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
return cb->Call(ls,{dict});
|
||||
|
||||
}
|
||||
TObject TDynamicList::Clear(GCList& ls)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "Clear");
|
||||
ls.GetGC()->BarrierEnd();
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
TObject TDynamicList::Remove(GCList& ls, TObject obj)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "Remove");
|
||||
dict->SetValue("Value", obj);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
TObject TDynamicList::RemoveAllEqual(GCList& ls, TObject obj)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "RemoveAllEqual");
|
||||
dict->SetValue("Value", obj);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
TObject TDynamicList::RemoveAt(GCList& ls, int64_t index)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "RemoveAt");
|
||||
dict->SetValue("Index", index);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
TObject TDynamicList::ToString(GCList& ls)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
dict->SetValue("Type", "ToString");
|
||||
ls.GetGC()->BarrierEnd();
|
||||
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
TObject TDynamicList::GetAt(GCList& ls, int64_t index)
|
||||
{
|
||||
@@ -50,7 +120,7 @@ namespace Tesses::CrossLang {
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
void TDynamicList::SetAt(GCList& ls, int64_t index, TObject val)
|
||||
TObject TDynamicList::SetAt(GCList& ls, int64_t index, TObject val)
|
||||
{
|
||||
auto dict = TDictionary::Create(ls);
|
||||
ls.GetGC()->BarrierBegin();
|
||||
@@ -58,7 +128,7 @@ namespace Tesses::CrossLang {
|
||||
dict->SetValue("Index",index);
|
||||
dict->SetValue("Value",val);
|
||||
ls.GetGC()->BarrierEnd();
|
||||
cb->Call(ls,{dict});
|
||||
return cb->Call(ls,{dict});
|
||||
}
|
||||
|
||||
TDynamicList::~TDynamicList()
|
||||
|
||||
Reference in New Issue
Block a user