//===-- ClangForward.h ------------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_ClangForward_h_
#define liblldb_ClangForward_h_

// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes

#if defined(__cplusplus)

namespace clang
{
    namespace Builtin
    {
        class Context;
    }

    class Action;
    class ASTConsumer;
    class ASTContext;
    class ASTRecordLayout;
    class AddrLabelExpr;
    class AnalyzerOptions;
    class BinaryOperator;
    class CodeGenOptions;
    class CodeGenerator;
    class CompilerInstance;
    class CompoundStmt;
    class CXXBaseSpecifier;
    class CXXBoolLiteralExpr;
    class CXXFunctionalCastExpr;
    class CXXMethodDecl;
    class CXXNamedCastExpr;
    class CXXRecordDecl;
    class CXXThisExpr;
    class CharacterLiteral;
    class CompoundAssignOperator;
    class Decl;
    class DeclarationName;
    class DeclaratorDecl;
    class DeclContext;
    class DeclRefExpr;
    class DeclStmt;
    class DependencyOutputOptions;
    class Diagnostic;
    class DiagnosticClient;
    class DiagnosticOptions;
    class EnumDecl;
    class Expr;
    class ExternalASTSource;
    class ExtVectorElementExpr;
    class FieldDecl;
    class FileManager;
    class FileSystemOptions;
    class FloatingLiteral;
    class FrontendOptions;
    class FunctionDecl;
    class GotoStmt;
    class HeaderSearchOptions;
    class IdentifierTable;
    class IntegerLiteral;
    class LabelStmt;
    class LangOptions;
    class MemberExpr;
    class NamedDecl;
    class NamespaceDecl;
    class NonTypeTemplateParmDecl;
    class ObjCEncodeExpr;
    class ObjCImplicitSetterGetterRefExpr;
    class ObjCInterfaceDecl;
    class ObjCIvarRefExpr;
    class ObjCMessageExpr;
    class ObjCMethodDecl;
    class ObjCPropertyRefExpr;
    class ObjCProtocolDecl;
    class ObjCProtocolExpr;
    class ObjCSelectorExpr;
    class ObjCSuperExpr;
    class ParenExpr;
    class ParmVarDecl;
    class PredefinedExpr;
    class PreprocessorOptions;
    class PreprocessorOutputOptions;
    class QualType;
    class QualifiedNameType;
    class RecordDecl;
    class SelectorTable;
    class SizeOfAlignOfExpr;
    class SourceLocation;
    class SourceManager;
    class Stmt;
    class StmtIteratorBase;
    class StringLiteral;
    class TagDecl;
    class TargetInfo;
    class TargetOptions;
    class TemplateArgument;
    class TemplateDecl;
    class TemplateTemplateParmDecl;
    class TemplateTypeParmDecl;
    class TextDiagnosticBuffer;
    class TranslationUnitDecl;
    class Type;
    class TypedefDecl;
    class TypesCompatibleExpr;
    class UnaryOperator;
    class ValueDecl;
    class VarDecl;
    struct PrintingPolicy;
}

namespace llvm
{
    class ExecutionEngine;
}

#endif  // #if defined(__cplusplus)
#endif  // liblldb_ClangForward_h_
