clang
3.7.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
work
release_test
rc4
llvm.src
tools
clang
lib
AST
CXXABI.h
Go to the documentation of this file.
1
//===----- CXXABI.h - Interface to C++ ABIs ---------------------*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// This provides an abstract class for C++ AST support. Concrete
11
// subclasses of this implement AST support for specific C++ ABIs.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_LIB_AST_CXXABI_H
16
#define LLVM_CLANG_LIB_AST_CXXABI_H
17
18
#include "
clang/AST/Type.h
"
19
20
namespace
clang {
21
22
class
ASTContext;
23
class
CXXConstructorDecl;
24
class
Expr;
25
class
MemberPointerType;
26
class
MangleNumberingContext;
27
28
/// Implements C++ ABI-specific semantic analysis functions.
29
class
CXXABI
{
30
public
:
31
virtual
~CXXABI
();
32
33
/// Returns the width and alignment of a member pointer in bits.
34
virtual
std::pair<uint64_t, unsigned>
35
getMemberPointerWidthAndAlign
(
const
MemberPointerType
*MPT)
const
= 0;
36
37
/// Returns the default calling convention for C++ methods.
38
virtual
CallingConv
getDefaultMethodCallConv
(
bool
isVariadic)
const
= 0;
39
40
/// Returns whether the given class is nearly empty, with just virtual
41
/// pointers and no data except possibly virtual bases.
42
virtual
bool
isNearlyEmpty
(
const
CXXRecordDecl
*RD)
const
= 0;
43
44
/// Returns a new mangling number context for this C++ ABI.
45
virtual
MangleNumberingContext
*
createMangleNumberingContext
()
const
= 0;
46
47
/// Adds a mapping from class to copy constructor for this C++ ABI.
48
virtual
void
addCopyConstructorForExceptionObject
(
CXXRecordDecl
*,
49
CXXConstructorDecl
*) = 0;
50
51
/// Retrieves the mapping from class to copy constructor for this C++ ABI.
52
virtual
const
CXXConstructorDecl
*
53
getCopyConstructorForExceptionObject
(
CXXRecordDecl
*) = 0;
54
55
virtual
void
addDefaultArgExprForConstructor
(
const
CXXConstructorDecl
*CD,
56
unsigned
ParmIdx,
Expr
*DAE) = 0;
57
58
virtual
Expr
*
getDefaultArgExprForConstructor
(
const
CXXConstructorDecl
*CD,
59
unsigned
ParmIdx) = 0;
60
};
61
62
/// Creates an instance of a C++ ABI class.
63
CXXABI
*
CreateItaniumCXXABI
(
ASTContext
&Ctx);
64
CXXABI
*
CreateMicrosoftCXXABI
(
ASTContext
&Ctx);
65
}
66
67
#endif
clang::CreateMicrosoftCXXABI
CXXABI * CreateMicrosoftCXXABI(ASTContext &Ctx)
Definition:
AST/MicrosoftCXXABI.cpp:246
Type.h
clang::CXXConstructorDecl
Represents a C++ constructor within a class.
Definition:
DeclCXX.h:2147
clang::CXXABI::getCopyConstructorForExceptionObject
virtual const CXXConstructorDecl * getCopyConstructorForExceptionObject(CXXRecordDecl *)=0
Retrieves the mapping from class to copy constructor for this C++ ABI.
clang::ASTContext
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition:
ASTContext.h:89
clang::MangleNumberingContext
Keeps track of the mangled names of lambda expressions and block literals within a particular context...
Definition:
MangleNumberingContext.h:33
clang::CXXABI::getDefaultMethodCallConv
virtual CallingConv getDefaultMethodCallConv(bool isVariadic) const =0
Returns the default calling convention for C++ methods.
clang::CreateItaniumCXXABI
CXXABI * CreateItaniumCXXABI(ASTContext &Ctx)
Creates an instance of a C++ ABI class.
Definition:
AST/ItaniumCXXABI.cpp:158
clang::Expr
Definition:
Expr.h:104
clang::CXXABI
Implements C++ ABI-specific semantic analysis functions.
Definition:
CXXABI.h:29
clang::CallingConv
CallingConv
CallingConv - Specifies the calling convention that a function uses.
Definition:
Specifiers.h:204
clang::CXXABI::isNearlyEmpty
virtual bool isNearlyEmpty(const CXXRecordDecl *RD) const =0
clang::CXXABI::addDefaultArgExprForConstructor
virtual void addDefaultArgExprForConstructor(const CXXConstructorDecl *CD, unsigned ParmIdx, Expr *DAE)=0
clang::CXXABI::getDefaultArgExprForConstructor
virtual Expr * getDefaultArgExprForConstructor(const CXXConstructorDecl *CD, unsigned ParmIdx)=0
clang::MemberPointerType
Definition:
Type.h:2345
clang::CXXABI::~CXXABI
virtual ~CXXABI()
Definition:
ASTContext.cpp:8435
clang::CXXABI::addCopyConstructorForExceptionObject
virtual void addCopyConstructorForExceptionObject(CXXRecordDecl *, CXXConstructorDecl *)=0
Adds a mapping from class to copy constructor for this C++ ABI.
clang::CXXRecordDecl
Represents a C++ struct/union/class.
Definition:
DeclCXX.h:285
clang::CXXABI::getMemberPointerWidthAndAlign
virtual std::pair< uint64_t, unsigned > getMemberPointerWidthAndAlign(const MemberPointerType *MPT) const =0
Returns the width and alignment of a member pointer in bits.
clang::CXXABI::createMangleNumberingContext
virtual MangleNumberingContext * createMangleNumberingContext() const =0
Returns a new mangling number context for this C++ ABI.
Generated on Mon Aug 31 2015 10:45:14 for clang by
1.8.6