Support having no getter/setters on a userdata field
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2019-06-15 15:38:52 +02:00
parent 7c345d85e8
commit 5cd05053e1
5 changed files with 41 additions and 7 deletions

View File

@@ -9,9 +9,9 @@
class UserDataField {
shared_ptr<ScriptType> _type;
EvalValue* (*_get)(void* obj);
void (*_set)(void* obj, EvalValue*);
void (*_set)(void* obj, EvalValue* val);
public:
UserDataField(ScriptType* type, EvalValue* (*getter)(void* obj), void (*setter)(void* obj, EvalValue*)){
UserDataField(ScriptType* type, EvalValue* (*getter)(void* obj), void (*setter)(void* obj, EvalValue* val)){
_type = shared_ptr<ScriptType>(type);
_get = getter;
_set = setter;
@@ -21,10 +21,18 @@ public:
return _type;
}
bool HasGetter(){
return _get != nullptr;
}
EvalValue* Get(void* obj){
return this ->_get(obj);
}
bool HasSetter(){
return _set != nullptr;
}
void Set(void* obj, EvalValue* val){
this->_set(obj, val);
}

View File

@@ -28,6 +28,10 @@ public:
return _userData->ContainsField(str->GetHashValue());
}
UserDataField* GetField(uint32_t id){
return _userData -> GetField(id);
}
shared_ptr<ScriptType> GetIndexedType(ScriptType* indexer) final{
auto stringKey = (StringScriptType*)indexer;
if (stringKey->IsKnownAtBind()){