summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/clang/tools/libclang/CXTranslationUnit.h
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:31:31 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:31:31 +0000
commite5dd70708596ae51455a0ffa086a00c5b29f8583 (patch)
tree5d676f27b570bacf71e786c3b5cff3e6f6679b59 /gnu/llvm/clang/tools/libclang/CXTranslationUnit.h
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-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.h89
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