24 #ifndef PXR_BASE_TF_WEAK_BASE_H
25 #define PXR_BASE_TF_WEAK_BASE_H
69 Register(std::atomic<Tf_Remnant*> &remnantPtr) {
83 Register(std::atomic<Tf_Remnant*> &remnantPtr,
T *candidate) {
85 if (remnantPtr.compare_exchange_strong(
87 static_cast<Tf_Remnant*>(candidate))) {
114 mutable bool _notify, _notify2;
175 if (
Tf_Remnant *remnant = _remnantPtr.load(std::memory_order_relaxed)) {
192 return Tf_Remnant::Register<T>(_remnantPtr, tempRmnt);
196 return _remnantPtr.load(std::memory_order_relaxed) ?
true :
false;
205 mutable std::atomic<Tf_Remnant*> _remnantPtr;
221 #endif // PXR_BASE_TF_WEAK_BASE_H
TfRefPtr< T > TfCreateRefPtr(T *ptr)
virtual TF_API ~Tf_Remnant()
TfRefPtr< Tf_Remnant > _Register(T *tempRmnt) const
const TfWeakBase & operator=(const TfWeakBase &)
static TfRefPtr< Tf_Remnant > GetRemnant(TfWeakBase const &wb)
const TfWeakBase & __GetTfWeakBase__() const
TfWeakBase(const TfWeakBase &)
void EnableNotification2() const
static TfRefPtr< Tf_Remnant > Register(std::atomic< Tf_Remnant * > &remnantPtr)
static TF_API void Invoke2(void const *p)
virtual TF_API void const * _GetUniqueIdentifier() const
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
static TfRefPtr< Tf_Remnant > Register(std::atomic< Tf_Remnant * > &remnantPtr, T *candidate)
#define PXR_NAMESPACE_CLOSE_SCOPE
TfRefPtr< Tf_Remnant > _Register() const
virtual TF_API void EnableNotification() const
TF_API void const * GetUniqueIdentifier() const