1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#include "stdafx.h"
#include "DelegatedRef.h"
namespace code {
DelegatedContent::DelegatedContent(Ref referTo) {
set(referTo);
}
void DelegatedContent::set(Ref referTo) {
ref = new (this) DelegatedRef(this, referTo);
set(ref->address(), 0);
}
Ref DelegatedContent::to() const {
return Ref(ref);
}
StolenContent::StolenContent(RefSource *by) : DelegatedContent(Ref(by)) {}
RefSource *StolenContent::stolenBy() const {
return ref->source();
}
DelegatedRef::DelegatedRef(DelegatedContent *owner, Ref to) :
Reference(to, owner), owner(owner) {}
void DelegatedRef::moved(const void *newAddr) {
owner->set(newAddr, 0);
}
}
|