1 //===- CXComment.h - Routines for manipulating CXComments -----------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file defines routines for manipulating CXComments.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_CLANG_TOOLS_LIBCLANG_CXCOMMENT_H
14 #define LLVM_CLANG_TOOLS_LIBCLANG_CXCOMMENT_H
16 #include "CXTranslationUnit.h"
17 #include "clang-c/Documentation.h"
18 #include "clang-c/Index.h"
19 #include "clang/AST/ASTContext.h"
20 #include "clang/AST/Comment.h"
21 #include "clang/Frontend/ASTUnit.h"
30 static inline CXComment
createCXComment(const comments::Comment
*C
,
31 CXTranslationUnit TU
) {
34 Result
.TranslationUnit
= TU
;
38 static inline const comments::Comment
*getASTNode(CXComment CXC
) {
39 return static_cast<const comments::Comment
*>(CXC
.ASTNode
);
43 static inline const T
*getASTNodeAs(CXComment CXC
) {
44 const comments::Comment
*C
= getASTNode(CXC
);
48 return dyn_cast
<T
>(C
);
51 static inline ASTContext
&getASTContext(CXComment CXC
) {
52 return cxtu::getASTUnit(CXC
.TranslationUnit
)->getASTContext();
55 static inline comments::CommandTraits
&getCommandTraits(CXComment CXC
) {
56 return getASTContext(CXC
).getCommentCommandTraits();
59 } // end namespace cxcomment
60 } // end namespace clang