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 /// \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