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,
public:
}
private:
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 73 of file refBase.h.
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 277 of file weakPtr.h.