1241675Suqs//===- CXComment.h - Routines for manipulating CXComments -----------------===// 2241675Suqs// 3241675Suqs// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4241675Suqs// See https://llvm.org/LICENSE.txt for license information. 5241675Suqs// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6241675Suqs// 7241675Suqs//===----------------------------------------------------------------------===// 8241675Suqs// 9241675Suqs// This file defines routines for manipulating CXComments. 10241675Suqs// 11241675Suqs//===----------------------------------------------------------------------===// 12241675Suqs 13241675Suqs#ifndef LLVM_CLANG_TOOLS_LIBCLANG_CXCOMMENT_H 14241675Suqs#define LLVM_CLANG_TOOLS_LIBCLANG_CXCOMMENT_H 15241675Suqs 16241675Suqs#include "CXTranslationUnit.h" 17241675Suqs#include "clang-c/Documentation.h" 18241675Suqs#include "clang-c/Index.h" 19241675Suqs#include "clang/AST/ASTContext.h" 20241675Suqs#include "clang/AST/Comment.h" 21241675Suqs#include "clang/Frontend/ASTUnit.h" 22241675Suqs 23241675Suqsnamespace clang { 24241675Suqsnamespace comments { 25241675Suqs class CommandTraits; 26241675Suqs} 27241675Suqs 28241675Suqsnamespace cxcomment { 29241675Suqs 30241675Suqsstatic inline CXComment createCXComment(const comments::Comment *C, 31241675Suqs CXTranslationUnit TU) { 32241675Suqs CXComment Result; 33241675Suqs Result.ASTNode = C; 34241675Suqs Result.TranslationUnit = TU; 35241675Suqs return Result; 36241675Suqs} 37241675Suqs 38241675Suqsstatic inline const comments::Comment *getASTNode(CXComment CXC) { 39241675Suqs return static_cast<const comments::Comment *>(CXC.ASTNode); 40241675Suqs} 41241675Suqs 42241675Suqstemplate<typename T> 43241675Suqsstatic inline const T *getASTNodeAs(CXComment CXC) { 44241675Suqs const comments::Comment *C = getASTNode(CXC); 45241675Suqs if (!C) 46241675Suqs return nullptr; 47241675Suqs 48241675Suqs return dyn_cast<T>(C); 49241675Suqs} 50241675Suqs 51241675Suqsstatic inline ASTContext &getASTContext(CXComment CXC) { 52241675Suqs return cxtu::getASTUnit(CXC.TranslationUnit)->getASTContext(); 53241675Suqs} 54241675Suqs 55241675Suqsstatic inline comments::CommandTraits &getCommandTraits(CXComment CXC) { 56241675Suqs return getASTContext(CXC).getCommentCommandTraits(); 57241675Suqs} 58241675Suqs 59241675Suqs} // end namespace cxcomment 60241675Suqs} // end namespace clang 61241675Suqs 62241675Suqs#endif 63241675Suqs 64241675Suqs