You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- CFBundle.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 "CFBundle.h"
 | |
| #include "CFString.h"
 | |
| 
 | |
| //----------------------------------------------------------------------
 | |
| // CFBundle constructor
 | |
| //----------------------------------------------------------------------
 | |
| CFBundle::CFBundle(const char *path)
 | |
|     : CFReleaser<CFBundleRef>(), m_bundle_url() {
 | |
|   if (path && path[0])
 | |
|     SetPath(path);
 | |
| }
 | |
| 
 | |
| //----------------------------------------------------------------------
 | |
| // CFBundle copy constructor
 | |
| //----------------------------------------------------------------------
 | |
| CFBundle::CFBundle(const CFBundle &rhs)
 | |
|     : CFReleaser<CFBundleRef>(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<CFBundleRef>
 | |
|   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;
 | |
| }
 |