//===- ASTImporter.h - Importing ASTs from other Contexts -------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file defines the ASTImporter class which imports AST nodes from one // context into another context. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_AST_ASTIMPORTER_H #define LLVM_CLANG_AST_ASTIMPORTER_H #include "clang/AST/ASTImportError.h" #include "clang/AST/DeclBase.h" #include "clang/AST/DeclarationName.h" #include "clang/AST/ExprCXX.h" #include "clang/AST/NestedNameSpecifier.h" #include "clang/AST/TemplateName.h" #include "clang/AST/Type.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/SmallVector.h" #include <optional> #include <utility> namespace clang { class ASTContext; class ASTImporterSharedState; class Attr; class CXXBaseSpecifier; class CXXCtorInitializer; class Decl; class DeclContext; class Expr; class FileManager; class NamedDecl; class Stmt; class TagDecl; class TranslationUnitDecl; class TypeSourceInfo; // \brief Returns with a list of declarations started from the canonical decl // then followed by subsequent decls in the translation unit. // This gives a canonical list for each entry in the redecl chain. // `Decl::redecls()` gives a list of decls which always start from the // previous decl and the next item is actually the previous item in the order // of source locations. Thus, `Decl::redecls()` gives different lists for // the different entries in a given redecl chain. llvm::SmallVector<Decl*, 2> getCanonicalForwardRedeclChain(Decl* D); /// Imports selected nodes from one AST context into another context, /// merging AST nodes where appropriate. class ASTImporter { … }; } // namespace clang #endif // LLVM_CLANG_AST_ASTIMPORTER_H