blob: a0e5da21187dfd69fae99f610488d7a093bb442d [file] [log] [blame]
Johnny Chenfdc4a862011-07-19 22:41:47 +00001//===-- SWIG Interface for SBFileSpec ---------------------------*- 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
10namespace lldb {
11
Johnny Chen5cb19e72011-07-20 01:06:37 +000012%feature("docstring",
Bruce Mitchenerd93c4a32014-07-01 21:22:11 +000013"Represents a file specification that divides the path into a directory and
Johnny Chen5cb19e72011-07-20 01:06:37 +000014basename. The string values of the paths are put into uniqued string pools
15for fast comparisons and efficient memory usage.
16
17For example, the following code
18
19 lineEntry = context.GetLineEntry()
20 self.expect(lineEntry.GetFileSpec().GetDirectory(), 'The line entry should have the correct directory',
21 exe=False,
22 substrs = [self.mydir])
23 self.expect(lineEntry.GetFileSpec().GetFilename(), 'The line entry should have the correct filename',
24 exe=False,
25 substrs = ['main.c'])
26 self.assertTrue(lineEntry.GetLine() == self.line,
27 'The line entry's line number should match ')
28
29gets the line entry from the symbol context when a thread is stopped.
30It gets the file spec corresponding to the line entry and checks that
Bruce Mitchenerd93c4a32014-07-01 21:22:11 +000031the filename and the directory matches what we expect.
Johnny Chen5cb19e72011-07-20 01:06:37 +000032") SBFileSpec;
Johnny Chenfdc4a862011-07-19 22:41:47 +000033class SBFileSpec
34{
35public:
36 SBFileSpec ();
37
38 SBFileSpec (const lldb::SBFileSpec &rhs);
39
Bruce Mitchenerd93c4a32014-07-01 21:22:11 +000040 SBFileSpec (const char *path);// Deprecated, use SBFileSpec (const char *path, bool resolve)
Johnny Chenfdc4a862011-07-19 22:41:47 +000041
42 SBFileSpec (const char *path, bool resolve);
43
44 ~SBFileSpec ();
45
46 bool
47 IsValid() const;
48
49 bool
50 Exists () const;
51
52 bool
53 ResolveExecutableLocation ();
54
55 const char *
56 GetFilename() const;
57
58 const char *
59 GetDirectory() const;
60
Greg Claytonfbb76342013-11-20 21:07:01 +000061 void
62 SetFilename(const char *filename);
63
64 void
65 SetDirectory(const char *directory);
66
Johnny Chenfdc4a862011-07-19 22:41:47 +000067 uint32_t
68 GetPath (char *dst_path, size_t dst_len) const;
69
70 static int
71 ResolvePath (const char *src_path, char *dst_path, size_t dst_len);
72
73 bool
74 GetDescription (lldb::SBStream &description) const;
Jason Molenda878ae012016-02-19 00:05:17 +000075
76 void
77 AppendPathComponent (const char *file_or_directory);
78
Greg Clayton13d19502012-01-29 06:07:39 +000079 %pythoncode %{
Greg Clayton6b2bd932012-02-01 08:09:32 +000080 def __get_fullpath__(self):
81 spec_dir = self.GetDirectory()
82 spec_file = self.GetFilename()
83 if spec_dir and spec_file:
84 return '%s/%s' % (spec_dir, spec_file)
85 elif spec_dir:
86 return spec_dir
87 elif spec_file:
88 return spec_file
89 return None
90
91 __swig_getmethods__["fullpath"] = __get_fullpath__
Greg Clayton5ef31a92012-06-29 22:00:42 +000092 if _newclass: fullpath = property(__get_fullpath__, None, doc='''A read only property that returns the fullpath as a python string.''')
Greg Clayton6b2bd932012-02-01 08:09:32 +000093
Greg Clayton13d19502012-01-29 06:07:39 +000094 __swig_getmethods__["basename"] = GetFilename
Greg Clayton5ef31a92012-06-29 22:00:42 +000095 if _newclass: basename = property(GetFilename, None, doc='''A read only property that returns the path basename as a python string.''')
Greg Clayton13d19502012-01-29 06:07:39 +000096
97 __swig_getmethods__["dirname"] = GetDirectory
Greg Clayton5ef31a92012-06-29 22:00:42 +000098 if _newclass: dirname = property(GetDirectory, None, doc='''A read only property that returns the path directory name as a python string.''')
Greg Clayton13d19502012-01-29 06:07:39 +000099
100 __swig_getmethods__["exists"] = Exists
Greg Clayton5ef31a92012-06-29 22:00:42 +0000101 if _newclass: exists = property(Exists, None, doc='''A read only property that returns a boolean value that indicates if the file exists.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000102 %}
103
Johnny Chenfdc4a862011-07-19 22:41:47 +0000104};
105
106} // namespace lldb