//===----- CXXABI.h - Interface to C++ ABIs ---------------------*- 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 provides an abstract class for C++ AST support. Concrete // subclasses of this implement AST support for specific C++ ABIs. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_AST_CXXABI_H #define LLVM_CLANG_LIB_AST_CXXABI_H #include "clang/AST/Type.h" namespace clang { class ASTContext; class CXXConstructorDecl; class DeclaratorDecl; class MangleContext; class MangleNumberingContext; class MemberPointerType; /// Implements C++ ABI-specific semantic analysis functions. class CXXABI { … }; /// Creates an instance of a C++ ABI class. CXXABI *CreateItaniumCXXABI(ASTContext &Ctx); CXXABI *CreateMicrosoftCXXABI(ASTContext &Ctx); std::unique_ptr<MangleNumberingContext> createItaniumNumberingContext(MangleContext *); } #endif