#ifndef LLVM_CLANG_BASIC_LLVM_H
#define LLVM_CLANG_BASIC_LLVM_H
#include "llvm/Support/Casting.h"
#include "llvm/ADT/SmallVector.h"
namespace llvm {
class StringRef;
class Twine;
class VersionTuple;
template<typename T> class ArrayRef;
template<typename T> class MutableArrayRef;
template<typename T> class OwningArrayRef;
template<unsigned InternalLen> class SmallString;
template<typename T, unsigned N> class SmallVector;
template<typename T> class SmallVectorImpl;
template <class T> class Expected;
template<typename T>
struct SaveAndRestore;
template <typename T> class IntrusiveRefCntPtr;
template <typename T> struct IntrusiveRefCntPtrInfo;
template <class Derived> class RefCountedBase;
class raw_ostream;
class raw_pwrite_stream;
}
namespace clang {
isa;
isa_and_nonnull;
isa_and_present;
cast;
dyn_cast;
dyn_cast_or_null;
dyn_cast_if_present;
cast_or_null;
cast_if_present;
ArrayRef;
MutableArrayRef;
OwningArrayRef;
SaveAndRestore;
SmallString;
SmallVector;
SmallVectorImpl;
StringRef;
Twine;
VersionTuple;
Expected;
IntrusiveRefCntPtr;
IntrusiveRefCntPtrInfo;
RefCountedBase;
raw_ostream;
raw_pwrite_stream;
}
#endif