blob: 2195434922c142b576ff42f3ed15cd24f2e43835 [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",
13"Represents a file specfication that divides the path into a directory and
14basename. 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
31the filename and the directory matches wat we expect.
32") SBFileSpec;
Johnny Chenfdc4a862011-07-19 22:41:47 +000033class SBFileSpec
34{
35public:
36 SBFileSpec ();
37
38 SBFileSpec (const lldb::SBFileSpec &rhs);
39
40 SBFileSpec (const char *path);// Deprected, use SBFileSpec (const char *path, bool resolve)
41
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;
Greg Clayton13d19502012-01-29 06:07:39 +000075
76 %pythoncode %{
Greg Clayton6b2bd932012-02-01 08:09:32 +000077 def __get_fullpath__(self):
78 spec_dir = self.GetDirectory()
79 spec_file = self.GetFilename()
80 if spec_dir and spec_file:
81 return '%s/%s' % (spec_dir, spec_file)
82 elif spec_dir:
83 return spec_dir
84 elif spec_file:
85 return spec_file
86 return None
87
88 __swig_getmethods__["fullpath"] = __get_fullpath__
Greg Clayton5ef31a92012-06-29 22:00:42 +000089 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 +000090
Greg Clayton13d19502012-01-29 06:07:39 +000091 __swig_getmethods__["basename"] = GetFilename
Greg Clayton5ef31a92012-06-29 22:00:42 +000092 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 +000093
94 __swig_getmethods__["dirname"] = GetDirectory
Greg Clayton5ef31a92012-06-29 22:00:42 +000095 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 +000096
97 __swig_getmethods__["exists"] = Exists
Greg Clayton5ef31a92012-06-29 22:00:42 +000098 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 +000099 %}
100
Johnny Chenfdc4a862011-07-19 22:41:47 +0000101};
102
103} // namespace lldb