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