Files
clang-p2996/clang/tools/libclang/CXTranslationUnit.h
Chandler Carruth 757fcd6d1f [cleanup] Re-sort includes with llvm/utils/sort_includes.py and fix
a missing include from CLog.h.

CLog.h referenced most of the core libclang types but never directly
included Index.h that provides them. Previously it got lucky and other
headers were always included first but with the sorting it ended up
first in one case and stopped compiling. Adding the Index.h include
fixes it right up.

llvm-svn: 202810
2014-03-04 10:05:20 +00:00

84 lines
2.0 KiB
C++

//===- CXTranslationUnit.h - Routines for manipulating CXTranslationUnits -===//
//
// 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 CXTranslationUnits.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_CXTRANSLATIONUNIT_H
#define LLVM_CLANG_CXTRANSLATIONUNIT_H
#include "CLog.h"
#include "CXString.h"
#include "clang-c/Index.h"
namespace clang {
class ASTUnit;
class CIndexer;
namespace index {
class CommentToXMLConverter;
} // namespace index
} // namespace clang
struct CXTranslationUnitImpl {
clang::CIndexer *CIdx;
clang::ASTUnit *TheASTUnit;
clang::cxstring::CXStringPool *StringPool;
void *Diagnostics;
void *OverridenCursorsPool;
clang::index::CommentToXMLConverter *CommentToXML;
};
namespace clang {
namespace cxtu {
CXTranslationUnitImpl *MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *AU);
static inline ASTUnit *getASTUnit(CXTranslationUnit TU) {
if (!TU)
return 0;
return TU->TheASTUnit;
}
/// \returns true if the ASTUnit has a diagnostic about the AST file being
/// corrupted.
bool isASTReadError(ASTUnit *AU);
static inline bool isNotUsableTU(CXTranslationUnit TU) {
return !TU;
}
#define LOG_BAD_TU(TU) \
do { \
LOG_FUNC_SECTION { \
*Log << "called with a bad TU: " << TU; \
} \
} while(false)
class CXTUOwner {
CXTranslationUnitImpl *TU;
public:
CXTUOwner(CXTranslationUnitImpl *tu) : TU(tu) { }
~CXTUOwner();
CXTranslationUnitImpl *getTU() const { return TU; }
CXTranslationUnitImpl *takeTU() {
CXTranslationUnitImpl *retTU = TU;
TU = 0;
return retTU;
}
};
}} // end namespace clang::cxtu
#endif