1 //===-- CFCData.cpp ---------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 //----------------------------------------------------------------------
13 // CFCData constructor
14 //----------------------------------------------------------------------
15 CFCData::CFCData(CFDataRef data) : CFCReleaser<CFDataRef>(data) {}
17 //----------------------------------------------------------------------
18 // CFCData copy constructor
19 //----------------------------------------------------------------------
20 CFCData::CFCData(const CFCData &rhs) : CFCReleaser<CFDataRef>(rhs) {}
22 //----------------------------------------------------------------------
23 // CFCData copy constructor
24 //----------------------------------------------------------------------
25 CFCData &CFCData::operator=(const CFCData &rhs)
33 //----------------------------------------------------------------------
35 //----------------------------------------------------------------------
36 CFCData::~CFCData() {}
38 CFIndex CFCData::GetLength() const {
39 CFDataRef data = get();
41 return CFDataGetLength(data);
45 const uint8_t *CFCData::GetBytePtr() const {
46 CFDataRef data = get();
48 return CFDataGetBytePtr(data);
52 CFDataRef CFCData::Serialize(CFPropertyListRef plist,
53 CFPropertyListFormat format) {
54 CFAllocatorRef alloc = kCFAllocatorDefault;
56 CFCReleaser<CFWriteStreamRef> stream(
57 ::CFWriteStreamCreateWithAllocatedBuffers(alloc, alloc));
58 ::CFWriteStreamOpen(stream.get());
60 ::CFPropertyListWriteToStream(plist, stream.get(), format, NULL);
62 reset((CFDataRef)::CFWriteStreamCopyProperty(stream.get(),
63 kCFStreamPropertyDataWritten));
64 ::CFWriteStreamClose(stream.get());