clang API Documentation

LLVM.h
Go to the documentation of this file.
00001 //===--- LLVM.h - Import various common LLVM datatypes ----------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 //
00010 /// \file
00011 /// \brief Forward-declares and imports various common LLVM datatypes that
00012 /// clang wants to use unqualified.
00013 ///
00014 //===----------------------------------------------------------------------===//
00015 
00016 #ifndef LLVM_CLANG_BASIC_LLVM_H
00017 #define LLVM_CLANG_BASIC_LLVM_H
00018 
00019 // Do not proliferate #includes here, require clients to #include their
00020 // dependencies.
00021 // Casting.h has complex templates that cannot be easily forward declared.
00022 #include "llvm/Support/Casting.h"
00023 // None.h includes an enumerator that is desired & cannot be forward declared
00024 // without a definition of NoneType.
00025 #include "llvm/ADT/None.h"
00026 
00027 namespace llvm {
00028   // ADT's.
00029   class StringRef;
00030   class Twine;
00031   template<typename T> class ArrayRef;
00032   template<typename T> class MutableArrayRef;
00033   template<unsigned InternalLen> class SmallString;
00034   template<typename T, unsigned N> class SmallVector;
00035   template<typename T> class SmallVectorImpl;
00036   template<typename T> class Optional;
00037 
00038   template<typename T>
00039   struct SaveAndRestore;
00040 
00041   // Reference counting.
00042   template <typename T> class IntrusiveRefCntPtr;
00043   template <typename T> struct IntrusiveRefCntPtrInfo;
00044   template <class Derived> class RefCountedBase;
00045   class RefCountedBaseVPTR;
00046 
00047   class raw_ostream;
00048   // TODO: DenseMap, ...
00049 }
00050 
00051 
00052 namespace clang {
00053   // Casting operators.
00054   using llvm::isa;
00055   using llvm::cast;
00056   using llvm::dyn_cast;
00057   using llvm::dyn_cast_or_null;
00058   using llvm::cast_or_null;
00059   
00060   // ADT's.
00061   using llvm::None;
00062   using llvm::Optional;
00063   using llvm::StringRef;
00064   using llvm::Twine;
00065   using llvm::ArrayRef;
00066   using llvm::MutableArrayRef;
00067   using llvm::SmallString;
00068   using llvm::SmallVector;
00069   using llvm::SmallVectorImpl;
00070   using llvm::SaveAndRestore;
00071 
00072   // Reference counting.
00073   using llvm::IntrusiveRefCntPtr;
00074   using llvm::IntrusiveRefCntPtrInfo;
00075   using llvm::RefCountedBase;
00076   using llvm::RefCountedBaseVPTR;
00077 
00078   using llvm::raw_ostream;
00079 } // end namespace clang.
00080 
00081 #endif