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