42 template <
typename Data>
85 myData = UTmakeShared<Data>();
94 myData = UTmakeShared<Data>(*src);
116 {
return myData.use_count(); }
125 if (!myData.unique())
127 myData = UTmakeShared<Data>(*myData);
150 template <
typename Data>
166 myHandle = src.myHandle;
176 myHandle = src.myHandle;
199 return !myHandle.myData;
204 return *myHandle.myData;
209 return myHandle.myData.get();
211 const Data *
get()
const
213 return myHandle.myData.get();
237 template <
typename Data>
257 : myData (src.myData.
get())
276 myData = src.myData.get();
301 const Data *
get()
const
320 template <
typename Data>
354 myHandle = src.myHandle;
390 return !myHandle || !myHandle->myData;
401 return *(myHandle->myData);
408 return *(myHandle->myData);
420 return &*(myHandle->myData);
430 return &*(myHandle->myData);
445 if (!myHandle->myData)
449 myHandle->myWriteCount.
add(-1);
459 if (!myHandle->myData)
461 myHandle->myWriteCount.
add(1);
UT_COWWriteHandle(const UT_COWWriteHandle< Data > &src)
UT_COWTransientReadHandle(const UT_COWTransientReadHandle< Data > &src)
const UT_COWReadHandle< Data > & operator=(const UT_COWReadHandle< Data > &src)
UT_COWTransientReadHandle()
const UT_COWHandle< Data > & operator=(const UT_COWHandle< Data > &src)
void resetHandle()
Turns this into a null handle to drop references.
~UT_COWTransientReadHandle()
const Data & operator*() const
Data * operator->() const
UT_COWWriteHandle(UT_COWHandle< Data > *src)
int getRefCount() const
Returns the number of shared pointer references to the same Data.
void copy(const Data *src)
const UT_COWTransientReadHandle< Data > & operator=(const UT_COWHandle< Data > &src)
const UT_COWReadHandle< Data > & operator=(const UT_COWHandle< Data > &src)
UT_COWReadHandle(const UT_COWReadHandle< Data > &src)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
const Data * operator->() const
const UT_COWWriteHandle< Data > & operator=(UT_COWHandle< Data > *src)
void allocate()
Calls the default constructor on the object.
UT_COWReadHandle(const UT_COWHandle< Data > &src)
const Data & operator*() const
const Data * operator->() const
const UT_COWTransientReadHandle< Data > & operator=(const UT_COWTransientReadHandle< Data > &src)
UT_COWHandle(const UT_COWHandle< Data > &src)
const UT_COWWriteHandle< Data > & operator=(const UT_COWWriteHandle< Data > &src)
bool isNull() const
Test if this is a NULL pointer.
T add(T val)
Atomically adds val to myValue, returning the new value of myValue.
UT_COWTransientReadHandle(const UT_COWHandle< Data > &src)
bool isNull() const
Test if this is a NULL pointer.
void resetHandle()
Removes references, making this a null pointer.
void resetHandle()
Removes references, making this a null pointer.
bool isNull() const
Test if this is a NULL pointer.
SYS_FORCE_INLINE T relaxedLoad() const