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_ 155