Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:36:50

0001 //===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 /// \file
0010 /// Forward-declares and imports various common LLVM datatypes that
0011 /// clang wants to use unqualified.
0012 ///
0013 //===----------------------------------------------------------------------===//
0014 
0015 #ifndef LLVM_CLANG_BASIC_LLVM_H
0016 #define LLVM_CLANG_BASIC_LLVM_H
0017 
0018 // Do not proliferate #includes here, require clients to #include their
0019 // dependencies.
0020 // Casting.h has complex templates that cannot be easily forward declared.
0021 #include "llvm/Support/Casting.h"
0022 // Add this header as a workaround to prevent `too few template arguments for
0023 // class template 'SmallVector'` building error with build compilers like XL.
0024 #include "llvm/ADT/SmallVector.h"
0025 
0026 namespace llvm {
0027   // ADT's.
0028   class StringRef;
0029   class Twine;
0030   class VersionTuple;
0031   template<typename T> class ArrayRef;
0032   template<typename T> class MutableArrayRef;
0033   template<typename T> class OwningArrayRef;
0034   template<unsigned InternalLen> class SmallString;
0035   template<typename T, unsigned N> class SmallVector;
0036   template<typename T> class SmallVectorImpl;
0037   template <class T> class Expected;
0038 
0039   template<typename T>
0040   struct SaveAndRestore;
0041 
0042   // Reference counting.
0043   template <typename T> class IntrusiveRefCntPtr;
0044   template <typename T> struct IntrusiveRefCntPtrInfo;
0045   template <class Derived> class RefCountedBase;
0046 
0047   class raw_ostream;
0048   class raw_pwrite_stream;
0049   // TODO: DenseMap, ...
0050 }
0051 
0052 
0053 namespace clang {
0054   // Casting operators.
0055   using llvm::isa;
0056   using llvm::isa_and_nonnull;
0057   using llvm::isa_and_present;
0058   using llvm::cast;
0059   using llvm::dyn_cast;
0060   using llvm::dyn_cast_or_null;
0061   using llvm::dyn_cast_if_present;
0062   using llvm::cast_or_null;
0063   using llvm::cast_if_present;
0064 
0065   // ADT's.
0066   using llvm::ArrayRef;
0067   using llvm::MutableArrayRef;
0068   using llvm::OwningArrayRef;
0069   using llvm::SaveAndRestore;
0070   using llvm::SmallString;
0071   using llvm::SmallVector;
0072   using llvm::SmallVectorImpl;
0073   using llvm::StringRef;
0074   using llvm::Twine;
0075   using llvm::VersionTuple;
0076 
0077   // Error handling.
0078   using llvm::Expected;
0079 
0080   // Reference counting.
0081   using llvm::IntrusiveRefCntPtr;
0082   using llvm::IntrusiveRefCntPtrInfo;
0083   using llvm::RefCountedBase;
0084 
0085   using llvm::raw_ostream;
0086   using llvm::raw_pwrite_stream;
0087 } // end namespace clang.
0088 
0089 #endif