clang 23.0.0git
clang::SubobjectVisitorBase< Ptr, Derived > Class Template Reference

Given a type, subobject visitors visit all subobjects of the type in depth first order. More...

#include "clang/AST/SubobjectVisitor.h"

Inheritance diagram for clang::SubobjectVisitorBase< Ptr, Derived >:
[legend]

Public Member Functions

 SubobjectVisitorBase (ASTContext &Ctx)
Derived & getDerived ()
 Return a reference to the derived class.
void visit (QualType QT)
void traverseRecord (ptr_t< RecordDecl > RD)
bool visitBaseSpecifierPre (ptr_t< CXXBaseSpecifier > BS)
void visitBaseSpecifierPost (ptr_t< CXXBaseSpecifier > BS)
bool visitFieldDeclPre (ptr_t< FieldDecl > FD)
void visitFieldDeclPost (ptr_t< FieldDecl > FD)

Detailed Description

template<template< typename > class Ptr, typename Derived>
class clang::SubobjectVisitorBase< Ptr, Derived >

Given a type, subobject visitors visit all subobjects of the type in depth first order.

Both pre-order and post-order visitation are performed so that derived classes can maintain an access path to the visited elements. Subobjects include all base classes and non-static data members, including those that are not subobjects according to the C++ standard like data members with a reference type. Virtual base classes are visited each time they appear in a class hierarchy despite there being only one actual subobject present in an object of a most derived type. Array elements are not individually visited; only their containing array is.

Definition at line 31 of file SubobjectVisitor.h.

Constructor & Destructor Documentation

◆ SubobjectVisitorBase()

template<template< typename > class Ptr, typename Derived>
clang::SubobjectVisitorBase< Ptr, Derived >::SubobjectVisitorBase ( ASTContext & Ctx)
inline

Definition at line 36 of file SubobjectVisitor.h.

Member Function Documentation

◆ getDerived()

template<template< typename > class Ptr, typename Derived>
Derived & clang::SubobjectVisitorBase< Ptr, Derived >::getDerived ( )
inline

Return a reference to the derived class.

Definition at line 39 of file SubobjectVisitor.h.

Referenced by traverseRecord(), and visit().

◆ traverseRecord()

template<template< typename > class Ptr, typename Derived>
void clang::SubobjectVisitorBase< Ptr, Derived >::traverseRecord ( ptr_t< RecordDecl > RD)
inline

Definition at line 82 of file SubobjectVisitor.h.

References getDerived(), visitBaseSpecifierPre(), and visitFieldDeclPre().

◆ visit()

template<template< typename > class Ptr, typename Derived>
void clang::SubobjectVisitorBase< Ptr, Derived >::visit ( QualType QT)
inline

◆ visitBaseSpecifierPost()

template<template< typename > class Ptr, typename Derived>
void clang::SubobjectVisitorBase< Ptr, Derived >::visitBaseSpecifierPost ( ptr_t< CXXBaseSpecifier > BS)
inline

Definition at line 101 of file SubobjectVisitor.h.

◆ visitBaseSpecifierPre()

template<template< typename > class Ptr, typename Derived>
bool clang::SubobjectVisitorBase< Ptr, Derived >::visitBaseSpecifierPre ( ptr_t< CXXBaseSpecifier > BS)
inline

Definition at line 98 of file SubobjectVisitor.h.

Referenced by traverseRecord().

◆ visitFieldDeclPost()

template<template< typename > class Ptr, typename Derived>
void clang::SubobjectVisitorBase< Ptr, Derived >::visitFieldDeclPost ( ptr_t< FieldDecl > FD)
inline

Definition at line 107 of file SubobjectVisitor.h.

◆ visitFieldDeclPre()

template<template< typename > class Ptr, typename Derived>
bool clang::SubobjectVisitorBase< Ptr, Derived >::visitFieldDeclPre ( ptr_t< FieldDecl > FD)
inline

Definition at line 104 of file SubobjectVisitor.h.

Referenced by traverseRecord().


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