clang  6.0.0svn
Functions
DeclCXX.cpp File Reference
#include "clang/AST/DeclCXX.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/ASTUnresolvedSet.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/LambdaCapture.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/ODRHash.h"
#include "clang/AST/Type.h"
#include "clang/AST/TypeLoc.h"
#include "clang/AST/UnresolvedSet.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
Include dependency graph for DeclCXX.cpp:

Go to the source code of this file.

Functions

static CanQualType GetConversionType (ASTContext &Context, NamedDecl *Conv)
 
static void CollectVisibleConversions (ASTContext &Context, CXXRecordDecl *Record, bool InVirtual, AccessSpecifier Access, const llvm::SmallPtrSet< CanQualType, 8 > &ParentHiddenTypes, ASTUnresolvedSet &Output, UnresolvedSetImpl &VOutput, llvm::SmallPtrSet< NamedDecl *, 8 > &HiddenVBaseCs)
 Collect the visible conversions of a base class. More...
 
static void CollectVisibleConversions (ASTContext &Context, CXXRecordDecl *Record, ASTUnresolvedSet &Output)
 Collect the visible conversions of a class. More...
 
static bool isDeclContextInNamespace (const DeclContext *DC)
 
static bool recursivelyOverrides (const CXXMethodDecl *DerivedMD, const CXXMethodDecl *BaseMD)
 
static const char * getAccessName (AccessSpecifier AS)
 

Function Documentation

◆ CollectVisibleConversions() [1/2]

static void CollectVisibleConversions ( ASTContext Context,
CXXRecordDecl Record,
bool  InVirtual,
AccessSpecifier  Access,
const llvm::SmallPtrSet< CanQualType, 8 > &  ParentHiddenTypes,
ASTUnresolvedSet Output,
UnresolvedSetImpl VOutput,
llvm::SmallPtrSet< NamedDecl *, 8 > &  HiddenVBaseCs 
)
static

Collect the visible conversions of a base class.

Parameters
Recorda base class of the class we're considering
InVirtualwhether this base class is a virtual base (or a base of a virtual base)
Accessthe access along the inheritance path to this base
ParentHiddenTypesthe conversions provided by the inheritors of this base
Outputthe set to which to add conversions from non-virtual bases
VOutputthe set to which to add conversions from virtual bases
HiddenVBaseCsthe set of conversions which were hidden in a virtual base along some inheritance path

Definition at line 1205 of file DeclCXX.cpp.

Referenced by clang::CXXRecordDecl::getVisibleConversionFunctions().

◆ CollectVisibleConversions() [2/2]

static void CollectVisibleConversions ( ASTContext Context,
CXXRecordDecl Record,
ASTUnresolvedSet Output 
)
static

Collect the visible conversions of a class.

This would be extremely straightforward if it weren't for virtual bases. It might be worth special-casing that, really.

Definition at line 1270 of file DeclCXX.cpp.

◆ getAccessName()

static const char* getAccessName ( AccessSpecifier  AS)
static

Definition at line 2655 of file DeclCXX.cpp.

References clang::AS_none, clang::AS_private, clang::AS_protected, and clang::AS_public.

Referenced by clang::operator<<().

◆ GetConversionType()

static CanQualType GetConversionType ( ASTContext Context,
NamedDecl Conv 
)
static

Definition at line 1186 of file DeclCXX.cpp.

◆ isDeclContextInNamespace()

static bool isDeclContextInNamespace ( const DeclContext DC)
static

◆ recursivelyOverrides()

static bool recursivelyOverrides ( const CXXMethodDecl DerivedMD,
const CXXMethodDecl BaseMD 
)
static

Definition at line 1643 of file DeclCXX.cpp.

Referenced by clang::CXXMethodDecl::getCorrespondingMethodInClass().