Go to the documentation of this file.
29 #ifndef JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
30 #define JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
85 template <
typename SharedObjectType>
111 SharedObjectHolder& holder = getSharedObjectHolder();
114 if (--(holder.refCount) == 0)
115 holder.sharedInstance =
nullptr;
119 operator SharedObjectType*()
const noexcept {
return sharedObject; }
139 static SharedObjectHolder& getSharedObjectHolder()
noexcept
141 static void* holder [(
sizeof (SharedObjectHolder) +
sizeof(
void*) - 1) /
sizeof(
void*)] = { 0 };
142 return *
reinterpret_cast<SharedObjectHolder*
> (holder);
145 SharedObjectType* sharedObject;
149 SharedObjectHolder& holder = getSharedObjectHolder();
152 if (++(holder.refCount) == 1)
153 holder.sharedInstance =
new SharedObjectType();
155 sharedObject = holder.sharedInstance;
166 #endif // JUCE_SHAREDRESOURCEPOINTER_H_INCLUDED
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition: juce_LeakedObjectDetector.h:141
SharedObjectType & get() const noexcept
Definition: juce_SharedResourcePointer.h:122
Definition: juce_ScopedLock.h:59
SharedObjectType & getObject() const noexcept
Definition: juce_SharedResourcePointer.h:127
#define noexcept
Definition: juce_CompilerSupport.h:141
Definition: juce_ReferenceCountedObject.h:65
SharedResourcePointer(const SharedResourcePointer &)
Definition: juce_SharedResourcePointer.h:100
Definition: juce_SpinLock.h:46
#define JUCE_DELETED_FUNCTION
Definition: juce_CompilerSupport.h:133
SharedResourcePointer()
Definition: juce_SharedResourcePointer.h:95
SharedObjectType * operator->() const noexcept
Definition: juce_SharedResourcePointer.h:129
~SharedResourcePointer()
Definition: juce_SharedResourcePointer.h:109
Definition: juce_SharedResourcePointer.h:86