Home | History | Annotate | Download | only in Basic
      1 //===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 /// \file
     11 /// \brief Forward-declares and imports various common LLVM datatypes that
     12 /// clang wants to use unqualified.
     13 ///
     14 //===----------------------------------------------------------------------===//
     15 
     16 #ifndef LLVM_CLANG_BASIC_LLVM_H
     17 #define LLVM_CLANG_BASIC_LLVM_H
     18 
     19 // Do not proliferate #includes here, require clients to #include their
     20 // dependencies.
     21 // Casting.h has complex templates that cannot be easily forward declared.
     22 #include "llvm/Support/Casting.h"
     23 // None.h includes an enumerator that is desired & cannot be forward declared
     24 // without a definition of NoneType.
     25 #include "llvm/ADT/None.h"
     26 
     27 namespace llvm {
     28   // ADT's.
     29   class StringRef;
     30   class Twine;
     31   template<typename T> class ArrayRef;
     32   template<typename T> class MutableArrayRef;
     33   template<unsigned InternalLen> class SmallString;
     34   template<typename T, unsigned N> class SmallVector;
     35   template<typename T> class SmallVectorImpl;
     36   template<typename T> class Optional;
     37 
     38   template<typename T>
     39   struct SaveAndRestore;
     40 
     41   // Reference counting.
     42   template <typename T> class IntrusiveRefCntPtr;
     43   template <typename T> struct IntrusiveRefCntPtrInfo;
     44   template <class Derived> class RefCountedBase;
     45   class RefCountedBaseVPTR;
     46 
     47   class raw_ostream;
     48   class raw_pwrite_stream;
     49   // TODO: DenseMap, ...
     50 }
     51 
     52 
     53 namespace clang {
     54   // Casting operators.
     55   using llvm::isa;
     56   using llvm::cast;
     57   using llvm::dyn_cast;
     58   using llvm::dyn_cast_or_null;
     59   using llvm::cast_or_null;
     60 
     61   // ADT's.
     62   using llvm::None;
     63   using llvm::Optional;
     64   using llvm::StringRef;
     65   using llvm::Twine;
     66   using llvm::ArrayRef;
     67   using llvm::MutableArrayRef;
     68   using llvm::SmallString;
     69   using llvm::SmallVector;
     70   using llvm::SmallVectorImpl;
     71   using llvm::SaveAndRestore;
     72 
     73   // Reference counting.
     74   using llvm::IntrusiveRefCntPtr;
     75   using llvm::IntrusiveRefCntPtrInfo;
     76   using llvm::RefCountedBase;
     77   using llvm::RefCountedBaseVPTR;
     78 
     79   using llvm::raw_ostream;
     80   using llvm::raw_pwrite_stream;
     81 } // end namespace clang.
     82 
     83 #endif
     84