#include "SingleShotSource.h" #include using namespace std; CFStringRef gSingleShotSourceName = CFSTR("Single Shot Source"); SingleShotSource::SingleShotSource(CFTypeRef value, Transform* t, CFStringRef name) : Source(gSingleShotSourceName, t, name) { SetValue(value); } void SingleShotSource::DoActivate() { // Make sure our destination doesn't vanish while we are sending it data (or the final NULL) CFRetain(mDestination->GetCFObject()); // take our value and send it on its way mDestination->SetAttribute(mDestinationName, GetValue()); // send an end of stream mDestination->SetAttribute(mDestinationName, NULL); CFRelease(mDestination->GetCFObject()); } Boolean SingleShotSource::Equal(const CoreFoundationObject* obj) { if (Source::Equal(obj)) { const SingleShotSource* sss = (const SingleShotSource*) obj; return CFEqual(GetValue(), sss->GetValue()); } return false; } CFTypeRef SingleShotSource::Make(CFTypeRef value, Transform* t, CFStringRef name) { return CoreFoundationHolder::MakeHolder(gInternalCFObjectName, new SingleShotSource(value, t, name)); } std::string SingleShotSource::DebugDescription() { string result = Source::DebugDescription() + ": SingleShotSource "; char buffer[256]; snprintf(buffer, sizeof(buffer), "(value = %p)", GetValue()); result += buffer; return result; }