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_ 104