AbstractObject Attribute::get(void* owner) const{ //if no accessor if(!extension->accessor){ Byte* adress = (Byte*)owner + offset; return AbstractObject((void*)adress,descriptor); } else{ //will probably not work std::vector<Variant> ret; extension->accessor->execute(owner, ret); return AbstractObject(ret[0].getAdress(),ret[0].getDescriptor()); } }
void ReferenceBase::serialize(void* data, const ISerializer* s){ if(s->isLoading()){ ID id = *(s->serialize().get<ID>()); reference = Object::fetchObject(id); } else{ ID id = reference ? reference->getId() : ID(); s->serialize(AbstractObject(id)); } }
AbstractObject AbstractSerializer::serialize(const AbstractObject& o) const { return AbstractObject(); }