[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / clang / tools / libclang / CXComment.h
blob30be06419ccfda7f756fdbd292653c21ce54e041
1 //===- CXComment.h - Routines for manipulating CXComments -----------------===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 //
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"
23 namespace clang {
24 namespace comments {
25 class CommandTraits;
28 namespace cxcomment {
30 static inline CXComment createCXComment(const comments::Comment *C,
31 CXTranslationUnit TU) {
32 CXComment Result;
33 Result.ASTNode = C;
34 Result.TranslationUnit = TU;
35 return Result;
38 static inline const comments::Comment *getASTNode(CXComment CXC) {
39 return static_cast<const comments::Comment *>(CXC.ASTNode);
42 template<typename T>
43 static inline const T *getASTNodeAs(CXComment CXC) {
44 const comments::Comment *C = getASTNode(CXC);
45 if (!C)
46 return nullptr;
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
62 #endif