//===-- CFBundle.cpp --------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Created by Greg Clayton on 1/16/08. // //===----------------------------------------------------------------------===// #include "CFBundle.h" #include "CFString.h" // CFBundle constructor CFBundle::CFBundle(const char *path) : CFReleaser(), m_bundle_url() { if (path && path[0]) SetPath(path); } // CFBundle copy constructor CFBundle::CFBundle(const CFBundle &rhs) : CFReleaser(rhs), m_bundle_url(rhs.m_bundle_url) {} // CFBundle copy constructor CFBundle &CFBundle::operator=(const CFBundle &rhs) { *this = rhs; return *this; } // Destructor CFBundle::~CFBundle() {} // Set the path for a bundle by supplying a bool CFBundle::SetPath(const char *path) { CFAllocatorRef alloc = kCFAllocatorDefault; // Release our old bundle and ULR reset(); // This class is a CFReleaser m_bundle_url.reset(); // Make a CFStringRef from the supplied path CFString cf_path; cf_path.SetFileSystemRepresentation(path); if (cf_path.get()) { // Make our Bundle URL m_bundle_url.reset(::CFURLCreateWithFileSystemPath( alloc, cf_path.get(), kCFURLPOSIXPathStyle, true)); if (m_bundle_url.get()) { reset(::CFBundleCreate(alloc, m_bundle_url.get())); } } return get() != NULL; } CFStringRef CFBundle::GetIdentifier() const { CFBundleRef bundle = get(); if (bundle != NULL) return ::CFBundleGetIdentifier(bundle); return NULL; } CFURLRef CFBundle::CopyExecutableURL() const { CFBundleRef bundle = get(); if (bundle != NULL) return CFBundleCopyExecutableURL(bundle); return NULL; }