clang API Documentation
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 // This file forward declares and imports various common LLVM datatypes that 00011 // clang wants to use unqualified. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef CLANG_BASIC_LLVM_H 00016 #define CLANG_BASIC_LLVM_H 00017 00018 // This should be the only #include, force #includes of all the others on 00019 // clients. 00020 #include "llvm/Support/Casting.h" 00021 00022 namespace llvm { 00023 // ADT's. 00024 class StringRef; 00025 class Twine; 00026 template<typename T> class ArrayRef; 00027 template<class T> class OwningPtr; 00028 template<unsigned InternalLen> class SmallString; 00029 template<typename T, unsigned N> class SmallVector; 00030 template<typename T> class SmallVectorImpl; 00031 00032 template<typename T> 00033 struct SaveAndRestore; 00034 00035 // Reference counting. 00036 template <typename T> class IntrusiveRefCntPtr; 00037 template <typename T> struct IntrusiveRefCntPtrInfo; 00038 template <class Derived> class RefCountedBase; 00039 class RefCountedBaseVPTR; 00040 00041 class raw_ostream; 00042 // TODO: DenseMap, ... 00043 } 00044 00045 00046 namespace clang { 00047 // Casting operators. 00048 using llvm::isa; 00049 using llvm::cast; 00050 using llvm::dyn_cast; 00051 using llvm::dyn_cast_or_null; 00052 using llvm::cast_or_null; 00053 00054 // ADT's. 00055 using llvm::StringRef; 00056 using llvm::Twine; 00057 using llvm::ArrayRef; 00058 using llvm::OwningPtr; 00059 using llvm::SmallString; 00060 using llvm::SmallVector; 00061 using llvm::SmallVectorImpl; 00062 using llvm::SaveAndRestore; 00063 00064 // Reference counting. 00065 using llvm::IntrusiveRefCntPtr; 00066 using llvm::IntrusiveRefCntPtrInfo; 00067 using llvm::RefCountedBase; 00068 using llvm::RefCountedBaseVPTR; 00069 00070 using llvm::raw_ostream; 00071 } // end namespace clang. 00072 00073 #endif