The same mechanism is used for creating and changing (replacing) a reference. References from a reference maker to a reference target are created by first declaring a RefTargetHandle
initialized to NULL
, and then by calling ReferenceMaker::ReplaceReference()
for each reference. The ReferenceMaker::ReplaceReference()
method is also be used to reassign a reference instead of ReferenceMaker::SetReference()
.
RefTargetHandle
to NULL before its first use.The following sample code demonstrates these steps:
class MyRefMaker : publicReferenceMaker
{
private:
// Note: RefTargetHandle is in fact a pointer to ReferenceTarget
RefTargetHandle target;
public:
MyRefMaker(RefTargetHandle ref)
: target(NULL)
{
ReplaceReference(0, ref);
}
intNumRefs() {
return 1;
}
RefTargetHandle GetReference(int i) {
assert(i == 0);
return target;
}
voidSetReference(inti, RefTargetHandle rtarg) {
assert(i==0) ;
target = rtarg;
}
RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget,
PartID& partID, RefMessage message)
{
if (hTarget == target) {
// perform processing according to the message
}
}
};