clang 19.0.0git
Public Member Functions | List of all members
clang::CXXBaseSpecifier Class Reference

Represents a base class of a C++ class. More...

#include "clang/AST/DeclCXX.h"

Public Member Functions

 CXXBaseSpecifier ()=default
 
 CXXBaseSpecifier (SourceRange R, bool V, bool BC, AccessSpecifier A, TypeSourceInfo *TInfo, SourceLocation EllipsisLoc)
 
SourceRange getSourceRange () const LLVM_READONLY
 Retrieves the source range that contains the entire base specifier.
 
SourceLocation getBeginLoc () const LLVM_READONLY
 
SourceLocation getEndLoc () const LLVM_READONLY
 
SourceLocation getBaseTypeLoc () const LLVM_READONLY
 Get the location at which the base class type was written.
 
bool isVirtual () const
 Determines whether the base class is a virtual base class (or not).
 
bool isBaseOfClass () const
 Determine whether this base class is a base of a class declared with the 'class' keyword (vs.
 
bool isPackExpansion () const
 Determine whether this base specifier is a pack expansion.
 
bool getInheritConstructors () const
 Determine whether this base class's constructors get inherited.
 
void setInheritConstructors (bool Inherit=true)
 Set that this base class's constructors should be inherited.
 
SourceLocation getEllipsisLoc () const
 For a pack expansion, determine the location of the ellipsis.
 
AccessSpecifier getAccessSpecifier () const
 Returns the access specifier for this base specifier.
 
AccessSpecifier getAccessSpecifierAsWritten () const
 Retrieves the access specifier as written in the source code (which may mean that no access specifier was explicitly written).
 
QualType getType () const
 Retrieves the type of the base class.
 
TypeSourceInfogetTypeSourceInfo () const
 Retrieves the type and source location of the base class.
 

Detailed Description

Represents a base class of a C++ class.

Each CXXBaseSpecifier represents a single, direct base class (or struct) of a C++ class (or struct). It specifies the type of that base class, whether it is a virtual or non-virtual base, and what level of access (public, protected, private) is used for the derivation. For example:

class A { };
class B { };
class C : public virtual A, protected B { };

In this code, C will have two CXXBaseSpecifiers, one for "public virtual A" and the other for "protected B".

Definition at line 146 of file DeclCXX.h.

Constructor & Destructor Documentation

◆ CXXBaseSpecifier() [1/2]

clang::CXXBaseSpecifier::CXXBaseSpecifier ( )
default

◆ CXXBaseSpecifier() [2/2]

clang::CXXBaseSpecifier::CXXBaseSpecifier ( SourceRange  R,
bool  V,
bool  BC,
AccessSpecifier  A,
TypeSourceInfo TInfo,
SourceLocation  EllipsisLoc 
)
inline

Definition at line 187 of file DeclCXX.h.

Member Function Documentation

◆ getAccessSpecifier()

AccessSpecifier clang::CXXBaseSpecifier::getAccessSpecifier ( ) const
inline

Returns the access specifier for this base specifier.

This is the actual base specifier as used for semantic analysis, so the result can never be AS_none. To retrieve the access specifier as written in the source code, use getAccessSpecifierAsWritten().

Definition at line 230 of file DeclCXX.h.

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

Referenced by clang::Sema::AttachBaseSpecifiers(), and DiagnoseAccessPath().

◆ getAccessSpecifierAsWritten()

AccessSpecifier clang::CXXBaseSpecifier::getAccessSpecifierAsWritten ( ) const
inline

Retrieves the access specifier as written in the source code (which may mean that no access specifier was explicitly written).

Use getAccessSpecifier() to retrieve the access specifier for use in semantic analysis.

Definition at line 242 of file DeclCXX.h.

Referenced by DiagnoseAccessPath(), clang::ODRDiagsEmitter::diagnoseMismatch(), and clang::ASTImporter::Import().

◆ getBaseTypeLoc()

SourceLocation clang::CXXBaseSpecifier::getBaseTypeLoc ( ) const
inline

Get the location at which the base class type was written.

Definition at line 198 of file DeclCXX.h.

References clang::TypeLoc::getBeginLoc(), and clang::TypeSourceInfo::getTypeLoc().

◆ getBeginLoc()

SourceLocation clang::CXXBaseSpecifier::getBeginLoc ( ) const
inline

◆ getEllipsisLoc()

SourceLocation clang::CXXBaseSpecifier::getEllipsisLoc ( ) const
inline

For a pack expansion, determine the location of the ellipsis.

Definition at line 221 of file DeclCXX.h.

Referenced by clang::ASTImporter::Import().

◆ getEndLoc()

SourceLocation clang::CXXBaseSpecifier::getEndLoc ( ) const
inline

Definition at line 195 of file DeclCXX.h.

Referenced by getNonCLikeKindForAnonymousStruct().

◆ getInheritConstructors()

bool clang::CXXBaseSpecifier::getInheritConstructors ( ) const
inline

Determine whether this base class's constructors get inherited.

Definition at line 213 of file DeclCXX.h.

◆ getSourceRange()

SourceRange clang::CXXBaseSpecifier::getSourceRange ( ) const
inline

◆ getType()

QualType clang::CXXBaseSpecifier::getType ( ) const
inline

◆ getTypeSourceInfo()

TypeSourceInfo * clang::CXXBaseSpecifier::getTypeSourceInfo ( ) const
inline

Retrieves the type and source location of the base class.

Definition at line 254 of file DeclCXX.h.

Referenced by clang::ASTImporter::Import().

◆ isBaseOfClass()

bool clang::CXXBaseSpecifier::isBaseOfClass ( ) const
inline

Determine whether this base class is a base of a class declared with the 'class' keyword (vs.

one declared with the 'struct' keyword).

Definition at line 207 of file DeclCXX.h.

Referenced by clang::ASTImporter::Import().

◆ isPackExpansion()

bool clang::CXXBaseSpecifier::isPackExpansion ( ) const
inline

Determine whether this base specifier is a pack expansion.

Definition at line 210 of file DeclCXX.h.

References clang::SourceLocation::isValid().

◆ isVirtual()

bool clang::CXXBaseSpecifier::isVirtual ( ) const
inline

◆ setInheritConstructors()

void clang::CXXBaseSpecifier::setInheritConstructors ( bool  Inherit = true)
inline

Set that this base class's constructors should be inherited.

Definition at line 216 of file DeclCXX.h.


The documentation for this class was generated from the following file: