| //===-- CFData.cpp ----------------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Created by Greg Clayton on 1/16/08. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "CFData.h" |
| |
| //---------------------------------------------------------------------- |
| // CFData constructor |
| //---------------------------------------------------------------------- |
| CFData::CFData(CFDataRef data) : |
| CFReleaser<CFDataRef>(data) |
| { |
| |
| } |
| |
| //---------------------------------------------------------------------- |
| // CFData copy constructor |
| //---------------------------------------------------------------------- |
| CFData::CFData(const CFData& rhs) : |
| CFReleaser<CFDataRef>(rhs) |
| { |
| |
| } |
| |
| //---------------------------------------------------------------------- |
| // CFData copy constructor |
| //---------------------------------------------------------------------- |
| CFData& |
| CFData::operator=(const CFData& rhs) |
| |
| { |
| *this = rhs; |
| return *this; |
| } |
| |
| //---------------------------------------------------------------------- |
| // Destructor |
| //---------------------------------------------------------------------- |
| CFData::~CFData() |
| { |
| } |
| |
| |
| CFIndex |
| CFData::GetLength() const |
| { |
| CFDataRef data = get(); |
| if (data) |
| return CFDataGetLength (data); |
| return 0; |
| } |
| |
| |
| const uint8_t* |
| CFData::GetBytePtr() const |
| { |
| CFDataRef data = get(); |
| if (data) |
| return CFDataGetBytePtr (data); |
| return NULL; |
| } |
| |
| CFDataRef |
| CFData::Serialize(CFPropertyListRef plist, CFPropertyListFormat format) |
| { |
| CFAllocatorRef alloc = kCFAllocatorDefault; |
| reset(); |
| CFReleaser<CFWriteStreamRef> 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(); |
| } |
| |