summaryrefslogtreecommitdiff
path: root/clang-r353983e/include/clang/Basic/LLVM.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang-r353983e/include/clang/Basic/LLVM.h')
-rw-r--r--clang-r353983e/include/clang/Basic/LLVM.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/clang-r353983e/include/clang/Basic/LLVM.h b/clang-r353983e/include/clang/Basic/LLVM.h
new file mode 100644
index 00000000..e9bb96af
--- /dev/null
+++ b/clang-r353983e/include/clang/Basic/LLVM.h
@@ -0,0 +1,88 @@
+//===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+//
+/// \file
+/// Forward-declares and imports various common LLVM datatypes that
+/// clang wants to use unqualified.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_BASIC_LLVM_H
+#define LLVM_CLANG_BASIC_LLVM_H
+
+// Do not proliferate #includes here, require clients to #include their
+// dependencies.
+// Casting.h has complex templates that cannot be easily forward declared.
+#include "llvm/Support/Casting.h"
+// None.h includes an enumerator that is desired & cannot be forward declared
+// without a definition of NoneType.
+#include "llvm/ADT/None.h"
+
+namespace llvm {
+ // ADT's.
+ class StringRef;
+ class Twine;
+ class VersionTuple;
+ template<typename T> class ArrayRef;
+ template<typename T> class MutableArrayRef;
+ template<typename T> class OwningArrayRef;
+ template<unsigned InternalLen> class SmallString;
+ template<typename T, unsigned N> class SmallVector;
+ template<typename T> class SmallVectorImpl;
+ template<typename T> class Optional;
+ template <class T> class Expected;
+
+ template<typename T>
+ struct SaveAndRestore;
+
+ // Reference counting.
+ template <typename T> class IntrusiveRefCntPtr;
+ template <typename T> struct IntrusiveRefCntPtrInfo;
+ template <class Derived> class RefCountedBase;
+
+ class raw_ostream;
+ class raw_pwrite_stream;
+ // TODO: DenseMap, ...
+}
+
+
+namespace clang {
+ // Casting operators.
+ using llvm::isa;
+ using llvm::cast;
+ using llvm::dyn_cast;
+ using llvm::dyn_cast_or_null;
+ using llvm::cast_or_null;
+
+ // ADT's.
+ using llvm::ArrayRef;
+ using llvm::MutableArrayRef;
+ using llvm::None;
+ using llvm::Optional;
+ using llvm::OwningArrayRef;
+ using llvm::SaveAndRestore;
+ using llvm::SmallString;
+ using llvm::SmallVector;
+ using llvm::SmallVectorImpl;
+ using llvm::StringRef;
+ using llvm::Twine;
+ using llvm::VersionTuple;
+
+ // Error handling.
+ using llvm::Expected;
+
+ // Reference counting.
+ using llvm::IntrusiveRefCntPtr;
+ using llvm::IntrusiveRefCntPtrInfo;
+ using llvm::RefCountedBase;
+
+ using llvm::raw_ostream;
+ using llvm::raw_pwrite_stream;
+} // end namespace clang.
+
+#endif