diff options
author | 2020-08-03 14:31:31 +0000 | |
---|---|---|
committer | 2020-08-03 14:31:31 +0000 | |
commit | e5dd70708596ae51455a0ffa086a00c5b29f8583 (patch) | |
tree | 5d676f27b570bacf71e786c3b5cff3e6f6679b59 /gnu/llvm/clang/tools/libclang/CXTranslationUnit.h | |
parent | Import LLVM 10.0.0 release including clang, lld and lldb. (diff) | |
download | wireguard-openbsd-e5dd70708596ae51455a0ffa086a00c5b29f8583.tar.xz wireguard-openbsd-e5dd70708596ae51455a0ffa086a00c5b29f8583.zip |
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom
tested by plenty
Diffstat (limited to 'gnu/llvm/clang/tools/libclang/CXTranslationUnit.h')
-rw-r--r-- | gnu/llvm/clang/tools/libclang/CXTranslationUnit.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/gnu/llvm/clang/tools/libclang/CXTranslationUnit.h b/gnu/llvm/clang/tools/libclang/CXTranslationUnit.h new file mode 100644 index 00000000000..3424bf2997f --- /dev/null +++ b/gnu/llvm/clang/tools/libclang/CXTranslationUnit.h @@ -0,0 +1,89 @@ +//===- CXTranslationUnit.h - Routines for manipulating CXTranslationUnits -===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines routines for manipulating CXTranslationUnits. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_LIBCLANG_CXTRANSLATIONUNIT_H +#define LLVM_CLANG_TOOLS_LIBCLANG_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; + unsigned ParsingOptions; + std::vector<std::string> Arguments; +}; + +struct CXTargetInfoImpl { + CXTranslationUnit TranslationUnit; +}; + +namespace clang { +namespace cxtu { + +CXTranslationUnitImpl *MakeCXTranslationUnit(CIndexer *CIdx, + std::unique_ptr<ASTUnit> AU); + +static inline ASTUnit *getASTUnit(CXTranslationUnit TU) { + if (!TU) + return nullptr; + 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 = nullptr; + return retTU; + } +}; + + +}} // end namespace clang::cxtu + +#endif |