//===-- CFCData.cpp ---------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "CFCData.h" //---------------------------------------------------------------------- // CFCData constructor //---------------------------------------------------------------------- CFCData::CFCData(CFDataRef data) : CFCReleaser(data) { } //---------------------------------------------------------------------- // CFCData copy constructor //---------------------------------------------------------------------- CFCData::CFCData(const CFCData& rhs) : CFCReleaser(rhs) { } //---------------------------------------------------------------------- // CFCData copy constructor //---------------------------------------------------------------------- CFCData& CFCData::operator=(const CFCData& rhs) { if (this != &rhs) *this = rhs; return *this; } //---------------------------------------------------------------------- // Destructor //---------------------------------------------------------------------- CFCData::~CFCData() { } CFIndex CFCData::GetLength() const { CFDataRef data = get(); if (data) return CFDataGetLength (data); return 0; } const uint8_t* CFCData::GetBytePtr() const { CFDataRef data = get(); if (data) return CFDataGetBytePtr (data); return NULL; } CFDataRef CFCData::Serialize(CFPropertyListRef plist, CFPropertyListFormat format) { CFAllocatorRef alloc = kCFAllocatorDefault; reset(); CFCReleaser stream (::CFWriteStreamCreateWithAllocatedBuffers (alloc, alloc)); ::CFWriteStreamOpen (stream.get()); CFIndex len = ::CFPropertyListWriteToStream (plist, stream.get(), format, NULL); if (len > 0) reset((CFDataRef)::CFWriteStreamCopyProperty (stream.get(), kCFStreamPropertyDataWritten)); ::CFWriteStreamClose (stream.get()); return get(); }