CXComment.h revision 2fe4f17d8eb90fb6a743e0d72641652f20fd73c7
18a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//===- CXComment.h - Routines for manipulating CXComments -----------------===// 28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// 38a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// The LLVM Compiler Infrastructure 48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// 58a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// This file is distributed under the University of Illinois Open Source 68a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// License. See LICENSE.TXT for details. 78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//===----------------------------------------------------------------------===// 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// This file defines routines for manipulating CXComments. 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//===----------------------------------------------------------------------===// 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef LLVM_CLANG_CXCOMMENT_H 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define LLVM_CLANG_CXCOMMENT_H 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "CXTranslationUnit.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "clang-c/Index.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "clang/AST/ASTContext.h" 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "clang/AST/Comment.h" 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "clang/Frontend/ASTUnit.h" 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comnamespace clang { 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comnamespace comments { 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com class CommandTraits; 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comnamespace cxcomment { 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic inline CXComment createCXComment(const comments::Comment *C, 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com CXTranslationUnit TU) { 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com CXComment Result; 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com Result.ASTNode = C; 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com Result.TranslationUnit = TU; 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return Result; 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic inline const comments::Comment *getASTNode(CXComment CXC) { 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return static_cast<const comments::Comment *>(CXC.ASTNode); 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comtemplate<typename T> 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic inline const T *getASTNodeAs(CXComment CXC) { 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const comments::Comment *C = getASTNode(CXC); 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (!C) 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return dyn_cast<T>(C); 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic inline ASTContext &getASTContext(CXComment CXC) { 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return cxtu::getASTUnit(CXC.TranslationUnit)->getASTContext(); 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic inline comments::CommandTraits &getCommandTraits(CXComment CXC) { 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return getASTContext(CXC).getCommentCommandTraits(); 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} // end namespace cxcomment 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} // end namespace clang 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com