clang 19.0.0git
Public Member Functions | Public Attributes | List of all members
clang::LazyOffsetPtr< T, OffsT, Get > Struct Template Reference

A lazy pointer to an AST node (of base type T) that resides within an external AST source. More...

#include "clang/AST/ExternalASTSource.h"

Inheritance diagram for clang::LazyOffsetPtr< T, OffsT, Get >:
Inheritance graph
[legend]

Public Member Functions

 LazyOffsetPtr ()=default
 
 LazyOffsetPtr (T *Ptr)
 
 LazyOffsetPtr (uint64_t Offset)
 
LazyOffsetPtroperator= (T *Ptr)
 
LazyOffsetPtroperator= (uint64_t Offset)
 
 operator bool () const
 Whether this pointer is non-NULL.
 
bool isValid () const
 Whether this pointer is non-NULL.
 
bool isOffset () const
 Whether this pointer is currently stored as an offset.
 
T * get (ExternalASTSource *Source) const
 Retrieve the pointer to the AST node that this lazy pointer points to.
 
T ** getAddressOfPointer (ExternalASTSource *Source) const
 Retrieve the address of the AST node pointer.
 

Public Attributes

uint64_t Ptr = 0
 Either a pointer to an AST node or the offset within the external AST source where the AST node can be found.
 

Detailed Description

template<typename T, typename OffsT, T *(ExternalASTSource::*)(OffsT Offset) Get>
struct clang::LazyOffsetPtr< T, OffsT, Get >

A lazy pointer to an AST node (of base type T) that resides within an external AST source.

The AST node is identified within the external AST source by a 63-bit offset, and can be retrieved via an operation on the external AST source itself.

Definition at line 323 of file ExternalASTSource.h.

Constructor & Destructor Documentation

◆ LazyOffsetPtr() [1/3]

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
clang::LazyOffsetPtr< T, OffsT, Get >::LazyOffsetPtr ( )
default

◆ LazyOffsetPtr() [2/3]

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
clang::LazyOffsetPtr< T, OffsT, Get >::LazyOffsetPtr ( T *  Ptr)
inlineexplicit

Definition at line 333 of file ExternalASTSource.h.

◆ LazyOffsetPtr() [3/3]

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
clang::LazyOffsetPtr< T, OffsT, Get >::LazyOffsetPtr ( uint64_t  Offset)
inlineexplicit

Definition at line 335 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

Member Function Documentation

◆ get()

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
T * clang::LazyOffsetPtr< T, OffsT, Get >::get ( ExternalASTSource Source) const
inline

◆ getAddressOfPointer()

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
T ** clang::LazyOffsetPtr< T, OffsT, Get >::getAddressOfPointer ( ExternalASTSource Source) const
inline

Retrieve the address of the AST node pointer.

Deserializes the pointee if necessary.

Definition at line 385 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::get(), and clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

◆ isOffset()

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
bool clang::LazyOffsetPtr< T, OffsT, Get >::isOffset ( ) const
inline

Whether this pointer is currently stored as an offset.

Definition at line 367 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

Referenced by clang::LazyOffsetPtr< T, OffsT, Get >::get(), and clang::ASTContext::getCurrentKeyFunction().

◆ isValid()

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
bool clang::LazyOffsetPtr< T, OffsT, Get >::isValid ( ) const
inline

Whether this pointer is non-NULL.

This operation does not require the AST node to be deserialized.

Definition at line 364 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

Referenced by clang::ASTContext::getCurrentKeyFunction(), and clang::ObjCMethodDecl::hasBody().

◆ operator bool()

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
clang::LazyOffsetPtr< T, OffsT, Get >::operator bool ( ) const
inlineexplicit

Whether this pointer is non-NULL.

This operation does not require the AST node to be deserialized.

Definition at line 359 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

◆ operator=() [1/2]

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
LazyOffsetPtr & clang::LazyOffsetPtr< T, OffsT, Get >::operator= ( T *  Ptr)
inline

Definition at line 341 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

◆ operator=() [2/2]

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
LazyOffsetPtr & clang::LazyOffsetPtr< T, OffsT, Get >::operator= ( uint64_t  Offset)
inline

Definition at line 346 of file ExternalASTSource.h.

References clang::LazyOffsetPtr< T, OffsT, Get >::Ptr.

Member Data Documentation

◆ Ptr

template<typename T , typename OffsT , T *(ExternalASTSource::*)(OffsT Offset) Get>
uint64_t clang::LazyOffsetPtr< T, OffsT, Get >::Ptr = 0
mutable

Either a pointer to an AST node or the offset within the external AST source where the AST node can be found.

If the low bit is clear, a pointer to the AST node. If the low bit is set, the upper 63 bits are the offset.

Definition at line 329 of file ExternalASTSource.h.

Referenced by clang::LazyOffsetPtr< T, OffsT, Get >::get(), clang::LazyOffsetPtr< T, OffsT, Get >::getAddressOfPointer(), clang::LazyOffsetPtr< T, OffsT, Get >::isOffset(), clang::LazyOffsetPtr< T, OffsT, Get >::isValid(), clang::LazyOffsetPtr< T, OffsT, Get >::LazyOffsetPtr(), clang::LazyOffsetPtr< T, OffsT, Get >::operator bool(), and clang::LazyOffsetPtr< T, OffsT, Get >::operator=().


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