40 template <
class ObjectType>
56 : object (objectToHold), shouldDelete (takeOwnership)
69 : object (objectToTransferFrom.
release()),
70 shouldDelete (objectToTransferFrom.shouldDelete)
84 if (
object != objectToTransferFrom.object)
87 object.reset (objectToTransferFrom.object.release());
90 shouldDelete = objectToTransferFrom.shouldDelete;
105 inline operator ObjectType*()
const noexcept {
return object.get(); }
108 inline ObjectType*
get()
const noexcept {
return object.get(); }
111 inline ObjectType&
operator*() const noexcept {
return *object; }
114 inline ObjectType*
operator->() const noexcept {
return object.get(); }
120 ObjectType*
release() noexcept {
return object.release(); }
143 void set (ObjectType* newObject,
bool takeOwnership)
145 if (
object.
get() != newObject)
148 object.reset (newObject);
151 shouldDelete = takeOwnership;
157 set (newObject,
true);
163 set (newObject,
false);
177 object.swapWith (other.object);
178 std::swap (shouldDelete, other.shouldDelete);
183 std::unique_ptr<ObjectType> object;
184 bool shouldDelete =
false;
ObjectType * release() noexcept
Removes the current object from this OptionalScopedPointer without deleting it.
void setOwned(ObjectType *newObject)
Makes this OptionalScopedPointer point at a new object, and take ownership of that object...
OptionalScopedPointer(OptionalScopedPointer &objectToTransferFrom)
Takes ownership of the object that another OptionalScopedPointer holds.
void reset()
Resets this pointer to null, possibly deleting the object that it holds, if it has ownership of it...
OptionalScopedPointer(ObjectType *objectToHold, bool takeOwnership)
Creates an OptionalScopedPointer to point to a given object, and specifying whether the OptionalScope...
void swapWith(OptionalScopedPointer< ObjectType > &other) noexcept
Swaps this object with another OptionalScopedPointer.
bool willDeleteObject() const noexcept
Returns true if the target object will be deleted when this pointer object is deleted.
Holds a pointer to an object which can optionally be deleted when this pointer goes out of scope...
ObjectType & operator*() const noexcept
Returns the object that this pointer is managing.
OptionalScopedPointer()=default
Creates an empty OptionalScopedPointer.
OptionalScopedPointer & operator=(OptionalScopedPointer &objectToTransferFrom)
Takes ownership of the object that another OptionalScopedPointer holds.
~OptionalScopedPointer()
The destructor may or may not delete the object that is being held, depending on the takeOwnership fl...
void setNonOwned(ObjectType *newObject)
Makes this OptionalScopedPointer point at a new object, but will not take ownership of that object...
void clear()
Does the same thing as reset().
ObjectType * operator->() const noexcept
Lets you access methods and properties of the object that this pointer is holding.