1//===-- SWIG Interface for SBModule -----------------------------*- 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
12class SBModuleSpec
13{
14public:
15
16    SBModuleSpec ();
17
18    SBModuleSpec (const lldb::SBModuleSpec &rhs);
19
20    ~SBModuleSpec ();
21
22    bool
23    IsValid () const;
24
25    void
26    Clear();
27
28    //------------------------------------------------------------------
29    /// Get const accessor for the module file.
30    ///
31    /// This function returns the file for the module on the host system
32    /// that is running LLDB. This can differ from the path on the
33    /// platform since we might be doing remote debugging.
34    ///
35    /// @return
36    ///     A const reference to the file specification object.
37    //------------------------------------------------------------------
38    lldb::SBFileSpec
39    GetFileSpec ();
40
41    void
42    SetFileSpec (const lldb::SBFileSpec &fspec);
43
44    //------------------------------------------------------------------
45    /// Get accessor for the module platform file.
46    ///
47    /// Platform file refers to the path of the module as it is known on
48    /// the remote system on which it is being debugged. For local
49    /// debugging this is always the same as Module::GetFileSpec(). But
50    /// remote debugging might mention a file '/usr/lib/liba.dylib'
51    /// which might be locally downloaded and cached. In this case the
52    /// platform file could be something like:
53    /// '/tmp/lldb/platform-cache/remote.host.computer/usr/lib/liba.dylib'
54    /// The file could also be cached in a local developer kit directory.
55    ///
56    /// @return
57    ///     A const reference to the file specification object.
58    //------------------------------------------------------------------
59    lldb::SBFileSpec
60    GetPlatformFileSpec ();
61
62    void
63    SetPlatformFileSpec (const lldb::SBFileSpec &fspec);
64
65    lldb::SBFileSpec
66    GetSymbolFileSpec ();
67
68    void
69    SetSymbolFileSpec (const lldb::SBFileSpec &fspec);
70
71    const char *
72    GetObjectName ();
73
74    void
75    SetObjectName (const char *name);
76
77    const char *
78    GetTriple ();
79
80    void
81    SetTriple (const char *triple);
82
83    const uint8_t *
84    GetUUIDBytes ();
85
86    size_t
87    GetUUIDLength ();
88
89    bool
90    SetUUIDBytes (const uint8_t *uuid, size_t uuid_len);
91
92    bool
93    GetDescription (lldb::SBStream &description);
94
95};
96
97
98class SBModuleSpecList
99{
100public:
101    SBModuleSpecList();
102
103    SBModuleSpecList (const SBModuleSpecList &rhs);
104
105    ~SBModuleSpecList();
106
107    static SBModuleSpecList
108    GetModuleSpecifications (const char *path);
109
110    void
111    Append (const lldb::SBModuleSpec &spec);
112
113    void
114    Append (const lldb::SBModuleSpecList &spec_list);
115
116    lldb::SBModuleSpec
117    FindFirstMatchingSpec (const lldb::SBModuleSpec &match_spec);
118
119    lldb::SBModuleSpecList
120    FindMatchingSpecs (const lldb::SBModuleSpec &match_spec);
121
122    size_t
123    GetSize();
124
125    lldb::SBModuleSpec
126    GetSpecAtIndex (size_t i);
127
128    bool
129    GetDescription (lldb::SBStream &description);
130
131};
132
133} // namespace lldb
134