Alp Toker 59c6bc5882 libclang: split out the documentation comment API
It's possible that the "comment AST" may be replaced or split out in the
midterm, any anyway this makes the headers easier to read.

Developers don't currently need to include "clang-c/Documentation.h" explicitly
and there's no macro to test for availability yet.

The raw comment and brief comment accessors have been kept in Index.h though
brief support may also move here as a separate proposal.

This is not a deprecation, just a gentle separation of concerns as we look to
simplify the built-in representation of comment nodes and support external
comment processors.

llvm-svn: 207392
2014-04-28 02:39:27 +00:00

65 lines
1.6 KiB
C++

//===- CXComment.h - Routines for manipulating CXComments -----------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines routines for manipulating CXComments.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_CXCOMMENT_H
#define LLVM_CLANG_CXCOMMENT_H
#include "CXTranslationUnit.h"
#include "clang-c/Index.h"
#include "clang-c/Documentation.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Comment.h"
#include "clang/Frontend/ASTUnit.h"
namespace clang {
namespace comments {
class CommandTraits;
}
namespace cxcomment {
static inline CXComment createCXComment(const comments::Comment *C,
CXTranslationUnit TU) {
CXComment Result;
Result.ASTNode = C;
Result.TranslationUnit = TU;
return Result;
}
static inline const comments::Comment *getASTNode(CXComment CXC) {
return static_cast<const comments::Comment *>(CXC.ASTNode);
}
template<typename T>
static inline const T *getASTNodeAs(CXComment CXC) {
const comments::Comment *C = getASTNode(CXC);
if (!C)
return NULL;
return dyn_cast<T>(C);
}
static inline ASTContext &getASTContext(CXComment CXC) {
return cxtu::getASTUnit(CXC.TranslationUnit)->getASTContext();
}
static inline comments::CommandTraits &getCommandTraits(CXComment CXC) {
return getASTContext(CXC).getCommentCommandTraits();
}
} // end namespace cxcomment
} // end namespace clang
#endif