]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBModuleSpec.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / API / SBModuleSpec.h
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
18 class SBModuleSpec
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     //------------------------------------------------------------------
47     lldb::SBFileSpec
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     //------------------------------------------------------------------
68     lldb::SBFileSpec
69     GetPlatformFileSpec ();
70
71     void
72     SetPlatformFileSpec (const lldb::SBFileSpec &fspec);
73
74     lldb::SBFileSpec
75     GetSymbolFileSpec ();
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
112 class SBModuleSpecList
113 {
114 public:
115     SBModuleSpecList();
116
117     SBModuleSpecList (const SBModuleSpecList &rhs);
118
119     ~SBModuleSpecList();
120
121     SBModuleSpecList &
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
133     SBModuleSpec
134     FindFirstMatchingSpec (const SBModuleSpec &match_spec);
135
136     SBModuleSpecList
137     FindMatchingSpecs (const SBModuleSpec &match_spec);
138
139     size_t
140     GetSize();
141     
142     SBModuleSpec
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_