1254721Semaste//===-- ClangNamespaceDecl.h ------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef liblldb_ClangNamespaceDecl_h_ 11254721Semaste#define liblldb_ClangNamespaceDecl_h_ 12254721Semaste 13263363Semaste#include <string> 14263363Semaste 15254721Semaste#include "lldb/lldb-public.h" 16254721Semaste#include "lldb/Core/ClangForward.h" 17254721Semaste 18254721Semastenamespace lldb_private { 19254721Semaste 20254721Semasteclass ClangNamespaceDecl 21254721Semaste{ 22254721Semastepublic: 23254721Semaste ClangNamespaceDecl () : 24254721Semaste m_ast (NULL), 25254721Semaste m_namespace_decl (NULL) 26254721Semaste { 27254721Semaste } 28254721Semaste 29254721Semaste ClangNamespaceDecl (clang::ASTContext *ast, clang::NamespaceDecl *namespace_decl) : 30254721Semaste m_ast (ast), 31254721Semaste m_namespace_decl (namespace_decl) 32254721Semaste { 33254721Semaste } 34254721Semaste 35254721Semaste ClangNamespaceDecl (const ClangNamespaceDecl &rhs) : 36254721Semaste m_ast (rhs.m_ast), 37254721Semaste m_namespace_decl (rhs.m_namespace_decl) 38254721Semaste { 39254721Semaste } 40254721Semaste 41254721Semaste const ClangNamespaceDecl & 42254721Semaste operator = (const ClangNamespaceDecl &rhs) 43254721Semaste { 44254721Semaste m_ast = rhs.m_ast; 45254721Semaste m_namespace_decl = rhs.m_namespace_decl; 46254721Semaste return *this; 47254721Semaste } 48254721Semaste 49254721Semaste //------------------------------------------------------------------ 50254721Semaste /// Convert to bool operator. 51254721Semaste /// 52254721Semaste /// This allows code to check a ClangNamespaceDecl object to see if 53254721Semaste /// it contains a valid namespace decl using code such as: 54254721Semaste /// 55254721Semaste /// @code 56254721Semaste /// ClangNamespaceDecl ns_decl(...); 57254721Semaste /// if (ns_decl) 58254721Semaste /// { ... 59254721Semaste /// @endcode 60254721Semaste /// 61254721Semaste /// @return 62254721Semaste /// /b True this object contains a valid namespace decl, \b 63254721Semaste /// false otherwise. 64254721Semaste //------------------------------------------------------------------ 65263363Semaste explicit operator bool() const 66254721Semaste { 67254721Semaste return m_ast != NULL && m_namespace_decl != NULL; 68254721Semaste } 69254721Semaste 70254721Semaste clang::ASTContext * 71254721Semaste GetASTContext() const 72254721Semaste { 73254721Semaste return m_ast; 74254721Semaste } 75254721Semaste 76254721Semaste void 77254721Semaste SetASTContext (clang::ASTContext *ast) 78254721Semaste { 79254721Semaste m_ast = ast; 80254721Semaste } 81254721Semaste 82254721Semaste clang::NamespaceDecl * 83254721Semaste GetNamespaceDecl () const 84254721Semaste { 85254721Semaste return m_namespace_decl; 86254721Semaste } 87254721Semaste 88254721Semaste void 89254721Semaste SetNamespaceDecl (clang::NamespaceDecl *namespace_decl) 90254721Semaste { 91254721Semaste m_namespace_decl = namespace_decl; 92254721Semaste } 93254721Semaste 94254721Semaste std::string 95254721Semaste GetQualifiedName () const; 96254721Semaste 97254721Semasteprotected: 98254721Semaste clang::ASTContext *m_ast; 99254721Semaste clang::NamespaceDecl *m_namespace_decl; 100254721Semaste}; 101254721Semaste 102254721Semaste 103254721Semaste} // namespace lldb_private 104254721Semaste 105254721Semaste#endif // #ifndef liblldb_ClangNamespaceDecl_h_ 106