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
84 lines
2.0 KiB
C++
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
|