Open
Bug 1738775
Opened 4 years ago
Should be able to `getter_AddRefs` a StaticRefPtr
Categories
(Core :: XPCOM, task)
Core
XPCOM
Tracking
()
NEW
| Tracking | Status | |
|---|---|---|
| firefox96 | --- | affected |
People
(Reporter: Gijs, Unassigned)
Details
Nika suggests:
template <class T>
class StaticRefPtrGetterAddRefs {
public:
explicit StaticRefPtrGetterAddRefs(StaticRefPtr<T>& aSmartPtr)
: mTargetSmartPtr(aSmartPtr) {}
operator void**() {
return reinterpret_cast<void**>(mTargetSmartPtr.StartAssignment());
}
operator T**() { return mTargetSmartPtr.StartAssignment(); }
T*& operator*() { return *(mTargetSmartPtr.StartAssignment()); }
private:
StaticRefPtr<T>& mTargetSmartPtr;
};
template <class T>
inline StaticRefPtrGetterAddRefs<T> getter_AddRefs(StaticRefPtr<T>& aSmartPtr) {
return StaticRefPtrGetterAddRefs<T>(aSmartPtr);
}
where you'd need to add a StartAssignment method to StaticRefPtr<T> too:
T** StartAssignment() {
AssignAssumingAddRef(nullptr);
return &mRawPtr;
}
You need to log in
before you can comment on or make changes to this bug.
Description
•