]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/llvm/tools/lldb/include/lldb/Symbol/ClangNamespaceDecl.h
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
[FreeBSD/stable/10.git] / contrib / llvm / tools / lldb / include / lldb / Symbol / ClangNamespaceDecl.h
1 //===-- ClangNamespaceDecl.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_ClangNamespaceDecl_h_
11 #define liblldb_ClangNamespaceDecl_h_
12
13 #include "lldb/lldb-public.h"
14 #include "lldb/Core/ClangForward.h"
15
16 namespace lldb_private {
17     
18 class ClangNamespaceDecl
19 {
20 public:
21     ClangNamespaceDecl () :
22         m_ast (NULL),
23         m_namespace_decl (NULL)
24     {
25     }
26
27     ClangNamespaceDecl (clang::ASTContext *ast, clang::NamespaceDecl *namespace_decl) :
28         m_ast (ast),
29         m_namespace_decl (namespace_decl)
30     {
31     }
32     
33     ClangNamespaceDecl (const ClangNamespaceDecl &rhs) :
34         m_ast (rhs.m_ast),
35         m_namespace_decl (rhs.m_namespace_decl)
36     {
37     }
38
39     const ClangNamespaceDecl &
40     operator = (const ClangNamespaceDecl &rhs)
41     {
42         m_ast = rhs.m_ast;
43         m_namespace_decl = rhs.m_namespace_decl;
44         return *this;
45     }
46     
47     //------------------------------------------------------------------
48     /// Convert to bool operator.
49     ///
50     /// This allows code to check a ClangNamespaceDecl object to see if 
51     /// it contains a valid namespace decl using code such as:
52     ///
53     /// @code
54     /// ClangNamespaceDecl ns_decl(...);
55     /// if (ns_decl)
56     /// { ...
57     /// @endcode
58     ///
59     /// @return
60     ///     /b True this object contains a valid namespace decl, \b 
61     ///     false otherwise.
62     //------------------------------------------------------------------
63     operator bool() const
64     {
65         return m_ast != NULL && m_namespace_decl != NULL;
66     }
67     
68     clang::ASTContext *
69     GetASTContext() const
70     { 
71         return m_ast; 
72     }
73
74     void
75     SetASTContext (clang::ASTContext *ast)
76     { 
77         m_ast = ast;
78     }
79
80     clang::NamespaceDecl *
81     GetNamespaceDecl () const
82     {
83         return m_namespace_decl;
84     }
85
86     void
87     SetNamespaceDecl (clang::NamespaceDecl *namespace_decl)
88     {
89         m_namespace_decl = namespace_decl;
90     }
91
92     std::string
93     GetQualifiedName () const;
94
95 protected:
96     clang::ASTContext  *m_ast;
97     clang::NamespaceDecl *m_namespace_decl;
98 };
99     
100
101 } // namespace lldb_private
102
103 #endif // #ifndef liblldb_ClangNamespaceDecl_h_