Home | History | Annotate | Download | only in Core
      1 //===-- ModuleChild.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 liblldb_ModuleChild_h_
     11 #define liblldb_ModuleChild_h_
     12 
     13 #include "lldb/lldb-private.h"
     14 
     15 namespace lldb_private {
     16 
     17 //----------------------------------------------------------------------
     18 /// @class ModuleChild ModuleChild.h "lldb/Core/ModuleChild.h"
     19 /// @brief A mix in class that contains a pointer back to the module
     20 ///        that owns the object which inherits from it.
     21 //----------------------------------------------------------------------
     22 class ModuleChild
     23 {
     24 public:
     25     //------------------------------------------------------------------
     26     /// Construct with owning module.
     27     ///
     28     /// @param[in] module
     29     ///     The module that owns the object that inherits from this
     30     ///     class.
     31     //------------------------------------------------------------------
     32     ModuleChild (const lldb::ModuleSP &module_sp);
     33 
     34     //------------------------------------------------------------------
     35     /// Copy constructor.
     36     ///
     37     /// @param[in] rhs
     38     ///     A const ModuleChild class reference to copy.
     39     //------------------------------------------------------------------
     40     ModuleChild (const ModuleChild& rhs);
     41 
     42     //------------------------------------------------------------------
     43     /// Destructor.
     44     //------------------------------------------------------------------
     45     ~ModuleChild();
     46 
     47     //------------------------------------------------------------------
     48     /// Assignment operator.
     49     ///
     50     /// @param[in] rhs
     51     ///     A const ModuleChild class reference to copy.
     52     ///
     53     /// @return
     54     ///     A const reference to this object.
     55     //------------------------------------------------------------------
     56     const ModuleChild&
     57     operator= (const ModuleChild& rhs);
     58 
     59     //------------------------------------------------------------------
     60     /// Get const accessor for the module pointer.
     61     ///
     62     /// @return
     63     ///     A const pointer to the module that owns the object that
     64     ///     inherits from this class.
     65     //------------------------------------------------------------------
     66     lldb::ModuleSP
     67     GetModule () const;
     68 
     69     //------------------------------------------------------------------
     70     /// Set accessor for the module pointer.
     71     ///
     72     /// @param[in] module
     73     ///     A new module that owns the object that inherits from this
     74     ///      class.
     75     //------------------------------------------------------------------
     76     void
     77     SetModule (const lldb::ModuleSP &module_sp);
     78 
     79 protected:
     80     //------------------------------------------------------------------
     81     // Member variables
     82     //------------------------------------------------------------------
     83     lldb::ModuleWP m_module_wp;   ///< The Module that owns the object that inherits
     84                                   ///< from this class.
     85 };
     86 
     87 } // namespace lldb_private
     88 
     89 
     90 #endif  // liblldb_ModuleChild_h_
     91