124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- ModuleChild.h -------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_ModuleChild_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_ModuleChild_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class ModuleChild ModuleChild.h "lldb/Core/ModuleChild.h"
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief A mix in class that contains a pointer back to the module
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///        that owns the object which inherits from it.
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ModuleChild
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Construct with owning module.
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[in] module
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     The module that owns the object that inherits from this
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     class.
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
323508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    ModuleChild (const lldb::ModuleSP &module_sp);
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Copy constructor.
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[in] rhs
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A const ModuleChild class reference to copy.
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ModuleChild (const ModuleChild& rhs);
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Destructor.
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~ModuleChild();
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Assignment operator.
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[in] rhs
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A const ModuleChild class reference to copy.
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @return
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A const reference to this object.
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const ModuleChild&
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator= (const ModuleChild& rhs);
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Get const accessor for the module pointer.
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @return
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A const pointer to the module that owns the object that
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     inherits from this class.
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
663508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    lldb::ModuleSP
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetModule () const;
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Set accessor for the module pointer.
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[in] module
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A new module that owns the object that inherits from this
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///      class.
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
773508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    SetModule (const lldb::ModuleSP &module_sp);
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Member variables
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
833508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    lldb::ModuleWP m_module_wp;   ///< The Module that owns the object that inherits
843508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton                                  ///< from this class.
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_ModuleChild_h_
91