124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CFCBundle.h ---------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef CoreFoundationCPP_CFBundle_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define CoreFoundationCPP_CFBundle_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "CFCReleaser.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CFCBundle : public CFCReleaser<CFBundleRef>
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Constructors and Destructors
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFCBundle (const char *path = NULL);
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFCBundle (CFURLRef url);
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~CFCBundle();
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFURLRef
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CopyExecutableURL () const;
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFStringRef
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetIdentifier () const;
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFTypeRef
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetValueForInfoDictionaryKey(CFStringRef key) const;
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
379ce953807eb814a93b449dc243de4f7bf32c3115Greg Clayton    GetPath (char *dst, size_t dst_len);
389ce953807eb814a93b449dc243de4f7bf32c3115Greg Clayton
399ce953807eb814a93b449dc243de4f7bf32c3115Greg Clayton    bool
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetPath (const char *path);
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Disallow copy and assignment constructors
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFCBundle(const CFCBundle&);
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const CFCBundle&
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator=(const CFCBundle&);
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #ifndef CoreFoundationCPP_CFBundle_h_
51