32template <
class ObjectType>
45 :
object (objectToTakePossessionOf)
50 :
object (objectToTransferFrom.release())
62 jassert (
object ==
nullptr ||
object != objectToTransferFrom.
object);
71 reset (newObjectToTakePossessionOf);
77 other.object =
nullptr;
82 reset (other.release());
87 inline operator ObjectType*()
const noexcept {
return object; }
99 void reset (ObjectType* newObject)
101 if (
object != newObject)
111 jassert (newObject ==
nullptr);
127 jassert (
object != other.object ||
this == other.getAddress() ||
object ==
nullptr);
129 std::swap (
object, other.object);
136 ObjectType*
object =
nullptr;
153template <typename ObjectType1, typename ObjectType2>
156 return pointer1 == pointer2.get();
159template <
typename ObjectType1,
typename ObjectType2>
162 return pointer1 != pointer2.get();
165template <
typename ObjectType1,
typename ObjectType2>
168 return pointer1.get() == pointer2;
171template <
typename ObjectType1,
typename ObjectType2>
174 return pointer1.get() != pointer2;
177template <
typename ObjectType1,
typename ObjectType2>
180 return pointer1.get() == pointer2.get();
183template <
typename ObjectType1,
typename ObjectType2>
186 return pointer1.get() != pointer2.get();
189template <
class ObjectType>
192 return pointer.get() ==
nullptr;
195template <
class ObjectType>
198 return pointer.get() !=
nullptr;
201template <
class ObjectType>
204 return pointer.
get() ==
nullptr;
207template <
class ObjectType>
210 return pointer.
get() !=
nullptr;
215template <
typename Type>
217 "Attempt to call deleteAndZero() on a ScopedPointer"); }
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_ScopedPointer.h:34
ScopedPointer(decltype(nullptr)) noexcept
Definition juce_ScopedPointer.h:42
ObjectType * get() const noexcept
Definition juce_ScopedPointer.h:88
ScopedPointer(ScopedPointer &objectToTransferFrom) noexcept
Definition juce_ScopedPointer.h:49
const ScopedPointer * getAddress() const noexcept
Definition juce_ScopedPointer.h:138
ObjectType & operator*() const noexcept
Definition juce_ScopedPointer.h:89
ScopedPointer(const ScopedPointer &)=delete
ObjectType * object
Definition juce_ScopedPointer.h:136
ObjectType * operator->() const noexcept
Definition juce_ScopedPointer.h:90
void swapWith(ScopedPointer< ObjectType > &other) noexcept
Definition juce_ScopedPointer.h:123
void reset(ScopedPointer &newObject)
Definition juce_ScopedPointer.h:115
ScopedPointer(ScopedPointer &&other) noexcept
Definition juce_ScopedPointer.h:75
ScopedPointer(ObjectType *objectToTakePossessionOf) noexcept
Definition juce_ScopedPointer.h:44
~ScopedPointer()
Definition juce_ScopedPointer.h:54
ScopedPointer()
Definition juce_ScopedPointer.h:40
ObjectType * release() noexcept
Definition juce_ScopedPointer.h:120
void reset()
Definition juce_ScopedPointer.h:92
ObjectType * createCopy() const
Definition juce_ScopedPointer.h:132
void reset(ObjectType *newObject)
Definition juce_ScopedPointer.h:99
void * object
Definition jmemsys.h:50
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
Definition carla_juce.cpp:31
Type * createCopyIfNotNull(const Type *objectToCopy)
Definition juce_Memory.h:60
void deleteAndZero(Type &pointer)
Definition juce_Memory.h:40
static void destroy(ObjectType *object)
Definition juce_ContainerDeletePolicy.h:42
#define const
Definition zconf.h:137