All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TfRefBase Class Reference

#include <refBase.h>

+ Inheritance diagram for TfRefBase:


struct  UniqueChangedListener

Public Types

typedef void(* UniqueChangedFuncPtr )(TfRefBase const *, bool)

Public Member Functions

 TfRefBase ()
size_t GetCurrentCount () const
 Return the current reference count of this object. More...
bool IsUnique () const
 Return true if only one TfRefPtr points to this object. More...
const TfRefCountGetRefCount () const
void SetShouldInvokeUniqueChangedListener (bool shouldCall)

Static Public Member Functions

static TF_API void SetUniqueChangedListener (UniqueChangedListener listener)

Protected Member Functions

virtual TF_API ~TfRefBase ()


template<typename T >
class TfRefPtr
struct Tf_RefPtr_UniqueChangedCounter
struct Tf_RefPtr_Counter
template<typename T >
TfRefPtr< TTfCreateRefPtrFromProtectedWeakPtr (TfWeakPtr< T > const &)

Detailed Description

Enable a concrete base class for use with TfRefPtr.

You should be familiar with the TfRefPtr type before reading further.

A class (but not an interface class) is enabled for reference counting via the TfRefPtr type by publicly deriving from TfRefBase.

For example,

class Simple : public TfRefBase {
return TfCreateRefPtr(new Simple);

The class Simple can now only be manipulated in terms of a TfRefPtr<Simple>.

To disable the cost of the "unique changed" system, derive from TfSimpleRefBase instead.

Definition at line 71 of file refBase.h.

Member Typedef Documentation

typedef void(* TfRefBase::UniqueChangedFuncPtr)(TfRefBase const *, bool)

Definition at line 74 of file refBase.h.

Constructor & Destructor Documentation

TfRefBase::TfRefBase ( )

Definition at line 81 of file refBase.h.

virtual TF_API TfRefBase::~TfRefBase ( )

Member Function Documentation

size_t TfRefBase::GetCurrentCount ( ) const

Return the current reference count of this object.

Definition at line 84 of file refBase.h.

const TfRefCount& TfRefBase::GetRefCount ( ) const

Definition at line 93 of file refBase.h.

bool TfRefBase::IsUnique ( ) const

Return true if only one TfRefPtr points to this object.

Definition at line 89 of file refBase.h.

void TfRefBase::SetShouldInvokeUniqueChangedListener ( bool  shouldCall)

Definition at line 97 of file refBase.h.

static TF_API void TfRefBase::SetUniqueChangedListener ( UniqueChangedListener  listener)

Friends And Related Function Documentation

friend struct Tf_RefPtr_Counter

Definition at line 116 of file refBase.h.

friend struct Tf_RefPtr_UniqueChangedCounter

Definition at line 115 of file refBase.h.

template<typename T >
TfRefPtr<T> TfCreateRefPtrFromProtectedWeakPtr ( TfWeakPtr< T > const p)

Thread-safe creation of a Tf ref pointer from a Tf weak pointer.

This is thread-safe in the sense that the result will be either a ref pointer to a live object with non-zero ref-count, or a NULL ref pointer. However, this depends on the client to provide a guarantee to protect the pointed-to object.

Specifically, the caller must guarantee that the TfRefBase part of the pointed-to object is not destroyed during this call. It is fine if the destruction process for the object begins (due to the ref-count going to zero as another thread drops the last ref) as long as the TfRefBase portion is not destroyed. If object destruction begins because the ref-count goes to zero before this call completes, this function will reliably return a NULL ref pointer.

Note that this is not a general mechanism for safely converting weak pointers to ref pointers, because it relies on the type T to provide the above guarantee.

Definition at line 262 of file weakPtr.h.

template<typename T >
friend class TfRefPtr

Definition at line 114 of file refBase.h.

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