Home | History | Annotate | Download | only in API
      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