class Def final
{
public:
- Def(const PtrLink<Object, ObjectInfo> *link, Object::Producer *producer)
- : _link{link}, _producer{producer}
+ // NOTE Object-to-ObjectInfo link is no longer used
+ // TODO Simplify Def's constructor
+ Def(const PtrLink<Object, ObjectInfo> *, Object::Producer *producer) : _producer{producer}
{
// DO NOTHING
}
Object::Producer *producer(void) const { return _producer; }
private:
- const PtrLink<Object, ObjectInfo> *_link = nullptr;
-
-private:
Object *_value = nullptr;
Object::Producer *_producer = nullptr;
};
void Def::value(Object *value)
{
- assert(_link != nullptr);
-
if (_value)
{
- auto info = _link->find(_value);
+ auto info = _value->info();
assert(info != nullptr);
info->def(nullptr);
{
_value = value;
- auto info = _link->find(_value);
+ auto info = _value->info();
assert(info != nullptr);
info->def(this);
}