1 //===-- SBFileSpec.h --------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_SBFileSpec_h_
11 #define LLDB_SBFileSpec_h_
12 
13 #include "lldb/API/SBDefines.h"
14 
15 namespace lldb {
16 
17 class SBFileSpec
18 {
19 public:
20     SBFileSpec ();
21 
22     SBFileSpec (const lldb::SBFileSpec &rhs);
23 
24     SBFileSpec (const char *path);// Deprected, use SBFileSpec (const char *path, bool resolve)
25 
26     SBFileSpec (const char *path, bool resolve);
27 
28     ~SBFileSpec ();
29 
30     const SBFileSpec &
31     operator = (const lldb::SBFileSpec &rhs);
32 
33     bool
34     IsValid() const;
35 
36     bool
37     Exists () const;
38 
39     bool
40     ResolveExecutableLocation ();
41 
42     const char *
43     GetFilename() const;
44 
45     const char *
46     GetDirectory() const;
47 
48     uint32_t
49     GetPath (char *dst_path, size_t dst_len) const;
50 
51     static int
52     ResolvePath (const char *src_path, char *dst_path, size_t dst_len);
53 
54     bool
55     GetDescription (lldb::SBStream &description) const;
56 
57 private:
58     friend class SBAttachInfo;
59     friend class SBBlock;
60     friend class SBCompileUnit;
61     friend class SBDeclaration;
62     friend class SBFileSpecList;
63     friend class SBHostOS;
64     friend class SBLaunchInfo;
65     friend class SBLineEntry;
66     friend class SBModule;
67     friend class SBModuleSpec;
68     friend class SBProcess;
69     friend class SBSourceManager;
70     friend class SBThread;
71     friend class SBTarget;
72 
73     SBFileSpec (const lldb_private::FileSpec& fspec);
74 
75     void
76     SetFileSpec (const lldb_private::FileSpec& fspec);
77 
78     const lldb_private::FileSpec *
79     operator->() const;
80 
81     const lldb_private::FileSpec *
82     get() const;
83 
84     const lldb_private::FileSpec &
85     operator*() const;
86 
87     const lldb_private::FileSpec &
88     ref() const;
89 
90     std::unique_ptr<lldb_private::FileSpec> m_opaque_ap;
91 };
92 
93 
94 } // namespace lldb
95 
96 #endif // LLDB_SBFileSpec_h_
97