// $Revision: 1.3 $ // Copyright (C) 1994-1995 Taligent, Inc. All rights reserved. #ifndef TaligentSamples_SENDER #include "Sender.h" #endif TSender::TSender() : MSenderProtocol(), MDelegatingNotifier(), fValue(0), fNotifier(NIL), fOwnsNotifier(false) { } TSender::TSender(const TSender& source) : MSenderProtocol(), MDelegatingNotifier(), fValue(source.fValue), fNotifier(NIL), fOwnsNotifier(false) { } TSender::~TSender() { if (fOwnsNotifier) { delete fNotifier; } } TSender& TSender::operator=(const TSender& source) { if (&source != this) { if (fOwnsNotifier) { delete fNotifier; fNotifier = NIL; fOwnsNotifier = false; } if (source.fOwnsNotifier) { fNotifier = NIL; // Can't copy MNotifier. } else { fNotifier = source.fNotifier; } } return *this; } long TSender::GetValue() const { return fValue; } void TSender::SetValue(long value) { if (value != fValue) { fValue = value; Notify(TNotification(GetValueChangedInterest())); } } TInterest TSender::GetValueChangedInterest() const { static const TToken kValueChanged("ValueChanged"); // Cast away const. return TInterest(GetNotifier(), kValueChanged); } MNotifier* TSender::GetNotifier() const { if (!fNotifier) { // Cast away const. ((TSender*)this)->fNotifier = new TNotifier; ((TSender*)this)->fOwnsNotifier = true; } return fNotifier; } void TSender::SetNotifier(MNotifier* notifier) { if (fOwnsNotifier) { delete fNotifier; fOwnsNotifier = false; } fNotifier = notifier; }