PorygonLang/src/UserData/UserData.cpp

32 lines
1006 B
C++
Raw Normal View History

2019-06-14 12:59:38 +00:00
#include "UserData.hpp"
#include "UserDataStorage.hpp"
namespace Porygon::UserData {
extern "C" {
void RegisterUserDataType(uint32_t id) {
auto ud = new UserData({});
UserDataStorage::RegisterType(id, ud);
}
void RegisterUserDataField(uint32_t typeId, uint32_t fieldId, UserDataField *field) {
auto ud = UserDataStorage::GetUserDataType(typeId);
ud->Get()->CreateField(fieldId, field);
}
int32_t GetUserDataFieldCount(uint32_t typeId) {
auto ud = UserDataStorage::GetUserDataType(typeId);
return ud->Get()->GetFieldCount();
}
void SetIsCastableFunc(uint32_t typeId, bool (*cast)(const ScriptType*, bool)){
auto ud = UserDataStorage::GetUserDataType(typeId);
ud->Get()->SetIsCastable(cast);
}
void SetCastFunc(uint32_t typeId, Evaluation::EvalValue* (*cast)(void*, const ScriptType*)){
auto ud = UserDataStorage::GetUserDataType(typeId);
ud->Get()->SetCastFunc(cast);
}
}
}