LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | List of all members
llvm::CallbackVH Class Reference

#include <ValueHandle.h>

Inheritance diagram for llvm::CallbackVH:
Inheritance graph
[legend]
Collaboration diagram for llvm::CallbackVH:
Collaboration graph
[legend]

Public Member Functions

 CallbackVH ()
 
 CallbackVH (Value *P)
 
 operator Value * () const
 
virtual void deleted ()
 
virtual void allUsesReplacedWith (Value *)
 
- Public Member Functions inherited from llvm::ValueHandleBase
 ValueHandleBase (HandleBaseKind Kind)
 
 ValueHandleBase (HandleBaseKind Kind, Value *V)
 
 ValueHandleBase (HandleBaseKind Kind, const ValueHandleBase &RHS)
 
 ~ValueHandleBase ()
 
Valueoperator= (Value *RHS)
 
Valueoperator= (const ValueHandleBase &RHS)
 
Valueoperator-> () const
 
Valueoperator* () const
 

Protected Member Functions

 CallbackVH (const CallbackVH &RHS)
 
virtual ~CallbackVH ()
 
void setValPtr (Value *P)
 
- Protected Member Functions inherited from llvm::ValueHandleBase
ValuegetValPtr () const
 
void setValPtrInt (unsigned K)
 
unsigned getValPtrInt () const
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::ValueHandleBase
static void ValueIsDeleted (Value *V)
 
static void ValueIsRAUWd (Value *Old, Value *New)
 
- Protected Types inherited from llvm::ValueHandleBase
enum  HandleBaseKind { Assert, Callback, Tracking, Weak }
 
- Static Protected Member Functions inherited from llvm::ValueHandleBase
static bool isValid (Value *V)
 

Detailed Description

CallbackVH - This is a value handle that allows subclasses to define callbacks that run when the underlying Value has RAUW called on it or is destroyed. This class can be used as the key of a map, as long as the user takes it out of the map before calling setValPtr() (since the map has to rearrange itself when the pointer changes). Unlike ValueHandleBase, this class has a vtable and a virtual destructor.

Definition at line 341 of file ValueHandle.h.

Constructor & Destructor Documentation

llvm::CallbackVH::CallbackVH ( const CallbackVH RHS)
inlineprotected

Definition at line 344 of file ValueHandle.h.

virtual llvm::CallbackVH::~CallbackVH ( )
inlineprotectedvirtual

Definition at line 347 of file ValueHandle.h.

llvm::CallbackVH::CallbackVH ( )
inline

Definition at line 354 of file ValueHandle.h.

llvm::CallbackVH::CallbackVH ( Value P)
inline

Definition at line 355 of file ValueHandle.h.

Member Function Documentation

virtual void llvm::CallbackVH::allUsesReplacedWith ( Value )
inlinevirtual

Called when this->getValPtr()->replaceAllUsesWith(new_value) is called, before any of the uses have actually been replaced. If WeakVH were implemented as a CallbackVH, it would use this method to call setValPtr(new_value). AssertingVH would do nothing in this method.

Reimplemented in llvm::DebugRecVH, llvm::ValueMapCallbackVH< KeyT, ValueT, Config >, llvm::MDNodeOperand, and llvm::MMIAddrLabelMapCallbackPtr.

Definition at line 375 of file ValueHandle.h.

virtual void llvm::CallbackVH::deleted ( )
inlinevirtual

Called when this->getValPtr() is destroyed, inside ~Value(), so you may call any non-virtual Value method on getValPtr(), but no subclass methods. If WeakVH were implemented as a CallbackVH, it would use this method to call setValPtr(NULL). AssertingVH would use this method to cause an assertion failure.

All implementations must remove the reference from this object to the Value that's being destroyed.

Reimplemented in llvm::DebugRecVH, llvm::ValueMapCallbackVH< KeyT, ValueT, Config >, llvm::MDNodeOperand, and llvm::MMIAddrLabelMapCallbackPtr.

Definition at line 369 of file ValueHandle.h.

References setValPtr().

llvm::CallbackVH::operator Value * ( ) const
inline

Definition at line 357 of file ValueHandle.h.

References llvm::ValueHandleBase::getValPtr().

void llvm::CallbackVH::setValPtr ( Value P)
inlineprotected

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