1//===-- SWIG Interface for SBModule -----------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9namespace lldb {
10
11class SBModuleSpec
12{
13public:
14
15    SBModuleSpec ();
16
17    SBModuleSpec (const lldb::SBModuleSpec &rhs);
18
19    ~SBModuleSpec ();
20
21    bool
22    IsValid () const;
23
24    explicit operator bool() const;
25
26    void
27    Clear();
28
29    %feature("docstring", "
30    Get const accessor for the module file.
31
32    This function returns the file for the module on the host system
33    that is running LLDB. This can differ from the path on the
34    platform since we might be doing remote debugging.
35
36    @return
37        A const reference to the file specification object.") GetFileSpec;
38    lldb::SBFileSpec
39    GetFileSpec ();
40
41    void
42    SetFileSpec (const lldb::SBFileSpec &fspec);
43
44    %feature("docstring", "
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.") GetPlatformFileSpec;
58    lldb::SBFileSpec
59    GetPlatformFileSpec ();
60
61    void
62    SetPlatformFileSpec (const lldb::SBFileSpec &fspec);
63
64    lldb::SBFileSpec
65    GetSymbolFileSpec ();
66
67    void
68    SetSymbolFileSpec (const lldb::SBFileSpec &fspec);
69
70    const char *
71    GetObjectName ();
72
73    void
74    SetObjectName (const char *name);
75
76    const char *
77    GetTriple ();
78
79    void
80    SetTriple (const char *triple);
81
82    const uint8_t *
83    GetUUIDBytes ();
84
85    size_t
86    GetUUIDLength ();
87
88    bool
89    SetUUIDBytes (const uint8_t *uuid, size_t uuid_len);
90
91    bool
92    GetDescription (lldb::SBStream &description);
93
94    STRING_EXTENSION(SBModuleSpec)
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    STRING_EXTENSION(SBModuleSpecList)
132};
133
134} // namespace lldb
135