1*30fdc8d8SChris Lattner //===-- CFCString.h ---------------------------------------------*- C++ -*-===//
2*30fdc8d8SChris Lattner //
3*30fdc8d8SChris Lattner //                     The LLVM Compiler Infrastructure
4*30fdc8d8SChris Lattner //
5*30fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source
6*30fdc8d8SChris Lattner // License. See LICENSE.TXT for details.
7*30fdc8d8SChris Lattner //
8*30fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
9*30fdc8d8SChris Lattner 
10*30fdc8d8SChris Lattner #ifndef CoreFoundationCPP_CFString_h_
11*30fdc8d8SChris Lattner #define CoreFoundationCPP_CFString_h_
12*30fdc8d8SChris Lattner 
13*30fdc8d8SChris Lattner #include <iosfwd>
14*30fdc8d8SChris Lattner 
15*30fdc8d8SChris Lattner #include "CFCReleaser.h"
16*30fdc8d8SChris Lattner 
17*30fdc8d8SChris Lattner class CFCString : public CFCReleaser<CFStringRef>
18*30fdc8d8SChris Lattner {
19*30fdc8d8SChris Lattner public:
20*30fdc8d8SChris Lattner     //------------------------------------------------------------------
21*30fdc8d8SChris Lattner     // Constructors and Destructors
22*30fdc8d8SChris Lattner     //------------------------------------------------------------------
23*30fdc8d8SChris Lattner                         CFCString (CFStringRef cf_str = NULL);
24*30fdc8d8SChris Lattner                         CFCString (const char *s, CFStringEncoding encoding);
25*30fdc8d8SChris Lattner                         CFCString (const CFCString& rhs);
26*30fdc8d8SChris Lattner                         CFCString& operator= (const CFCString& rhs);
27*30fdc8d8SChris Lattner                         virtual ~CFCString ();
28*30fdc8d8SChris Lattner 
29*30fdc8d8SChris Lattner         const char *    GetFileSystemRepresentation (std::string& str);
30*30fdc8d8SChris Lattner         CFStringRef     SetFileSystemRepresentation (const char *path);
31*30fdc8d8SChris Lattner         CFStringRef     SetFileSystemRepresentationFromCFType (CFTypeRef cf_type);
32*30fdc8d8SChris Lattner         CFStringRef     SetFileSystemRepresentationAndExpandTilde (const char *path);
33*30fdc8d8SChris Lattner         const char *    UTF8 (std::string& str);
34*30fdc8d8SChris Lattner         CFIndex         GetLength() const;
35*30fdc8d8SChris Lattner         static const char *UTF8 (CFStringRef cf_str, std::string& str);
36*30fdc8d8SChris Lattner         static const char *FileSystemRepresentation (CFStringRef cf_str, std::string& str);
37*30fdc8d8SChris Lattner         static const char *ExpandTildeInPath(const char* path, std::string &expanded_path);
38*30fdc8d8SChris Lattner 
39*30fdc8d8SChris Lattner };
40*30fdc8d8SChris Lattner 
41*30fdc8d8SChris Lattner #endif // #ifndef CoreFoundationCPP_CFString_h_
42