#ifndef PORYGONLANG_USERDATAFIELD_HPP #define PORYGONLANG_USERDATAFIELD_HPP #include "../Evaluator/EvalValues/EvalValue.hpp" #include "../Evaluator/EvalValues/NumericEvalValue.hpp" class UserDataField { shared_ptr _type; EvalValue* (*_get)(void* obj); void (*_set)(void* obj, EvalValue* val); public: UserDataField(ScriptType* type, EvalValue* (*getter)(void* obj), void (*setter)(void* obj, EvalValue* val)){ _type = shared_ptr(type); _get = getter; _set = setter; } shared_ptr GetType(){ 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); } }; #endif //PORYGONLANG_USERDATAFIELD_HPP