LLDB API Documentation

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