mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
Add move semantics to CDLockedReader/CDWriter
This commit is contained in:
parent
8b67ab31f5
commit
f94db0661e
@ -61,6 +61,36 @@ operator = (const CycleDataLockedReader<CycleDataType> ©) {
|
|||||||
_cycler->increment_read(_pointer);
|
_cycler->increment_read(_pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_MOVE_SEMANTICS
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE CycleDataLockedReader<CycleDataType>::
|
||||||
|
CycleDataLockedReader(CycleDataLockedReader<CycleDataType> &&from) NOEXCEPT :
|
||||||
|
_cycler(from._cycler),
|
||||||
|
_current_thread(from._current_thread),
|
||||||
|
_pointer(from._pointer)
|
||||||
|
{
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE void CycleDataLockedReader<CycleDataType>::
|
||||||
|
operator = (CycleDataLockedReader<CycleDataType> &&from) NOEXCEPT {
|
||||||
|
nassertv(_pointer == (CycleDataType *)NULL);
|
||||||
|
nassertv(_current_thread == from._current_thread);
|
||||||
|
|
||||||
|
_cycler = from._cycler;
|
||||||
|
_pointer = from._pointer;
|
||||||
|
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
#endif // USE_MOVE_SEMANTICS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -47,6 +47,11 @@ public:
|
|||||||
INLINE CycleDataLockedReader(const CycleDataLockedReader<CycleDataType> ©);
|
INLINE CycleDataLockedReader(const CycleDataLockedReader<CycleDataType> ©);
|
||||||
INLINE void operator = (const CycleDataLockedReader<CycleDataType> ©);
|
INLINE void operator = (const CycleDataLockedReader<CycleDataType> ©);
|
||||||
|
|
||||||
|
#if defined(USE_MOVE_SEMANTICS) && defined(DO_PIPELINING)
|
||||||
|
INLINE CycleDataLockedReader(CycleDataLockedReader<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
INLINE void operator = (CycleDataLockedReader<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE ~CycleDataLockedReader();
|
INLINE ~CycleDataLockedReader();
|
||||||
|
|
||||||
INLINE const CycleDataType *operator -> () const;
|
INLINE const CycleDataType *operator -> () const;
|
||||||
|
@ -64,6 +64,38 @@ operator = (const CycleDataLockedStageReader<CycleDataType> ©) {
|
|||||||
_cycler->increment_read(_pointer);
|
_cycler->increment_read(_pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_MOVE_SEMANTICS
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE CycleDataLockedStageReader<CycleDataType>::
|
||||||
|
CycleDataLockedStageReader(CycleDataLockedStageReader<CycleDataType> &&from) NOEXCEPT :
|
||||||
|
_cycler(from._cycler),
|
||||||
|
_current_thread(from._current_thread),
|
||||||
|
_pointer(from._pointer),
|
||||||
|
_stage(from._stage)
|
||||||
|
{
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE void CycleDataLockedStageReader<CycleDataType>::
|
||||||
|
operator = (CycleDataLockedStageReader<CycleDataType> &&from) NOEXCEPT {
|
||||||
|
nassertv(_pointer == (CycleDataType *)NULL);
|
||||||
|
nassertv(_current_thread == from._current_thread);
|
||||||
|
|
||||||
|
_cycler = from._cycler;
|
||||||
|
_pointer = from._pointer;
|
||||||
|
_stage = from._stage;
|
||||||
|
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
#endif // USE_MOVE_SEMANTICS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -34,6 +34,11 @@ public:
|
|||||||
INLINE CycleDataLockedStageReader(const CycleDataLockedStageReader<CycleDataType> ©);
|
INLINE CycleDataLockedStageReader(const CycleDataLockedStageReader<CycleDataType> ©);
|
||||||
INLINE void operator = (const CycleDataLockedStageReader<CycleDataType> ©);
|
INLINE void operator = (const CycleDataLockedStageReader<CycleDataType> ©);
|
||||||
|
|
||||||
|
#if defined(USE_MOVE_SEMANTICS) && defined(DO_PIPELINING)
|
||||||
|
INLINE CycleDataLockedStageReader(CycleDataLockedStageReader<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
INLINE void operator = (CycleDataLockedStageReader<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE ~CycleDataLockedStageReader();
|
INLINE ~CycleDataLockedStageReader();
|
||||||
|
|
||||||
INLINE const CycleDataType *operator -> () const;
|
INLINE const CycleDataType *operator -> () const;
|
||||||
|
@ -114,6 +114,38 @@ CycleDataStageWriter(PipelineCycler<CycleDataType> &cycler, int stage,
|
|||||||
force_to_0, _current_thread);
|
force_to_0, _current_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_MOVE_SEMANTICS
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE CycleDataStageWriter<CycleDataType>::
|
||||||
|
CycleDataStageWriter(CycleDataStageWriter<CycleDataType> &&from) NOEXCEPT :
|
||||||
|
_cycler(from._cycler),
|
||||||
|
_current_thread(from._current_thread),
|
||||||
|
_pointer(from._pointer),
|
||||||
|
_stage(from._stage)
|
||||||
|
{
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE void CycleDataStageWriter<CycleDataType>::
|
||||||
|
operator = (CycleDataStageWriter<CycleDataType> &&from) NOEXCEPT {
|
||||||
|
nassertv(_pointer == (CycleDataType *)NULL);
|
||||||
|
nassertv(_current_thread == from._current_thread);
|
||||||
|
|
||||||
|
_cycler = from._cycler;
|
||||||
|
_pointer = from._pointer;
|
||||||
|
_stage = from._stage;
|
||||||
|
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
#endif // USE_MOVE_SEMANTICS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -47,6 +47,11 @@ public:
|
|||||||
CycleDataLockedStageReader<CycleDataType> &take_from,
|
CycleDataLockedStageReader<CycleDataType> &take_from,
|
||||||
bool force_to_0);
|
bool force_to_0);
|
||||||
|
|
||||||
|
#if defined(USE_MOVE_SEMANTICS) && defined(DO_PIPELINING)
|
||||||
|
INLINE CycleDataStageWriter(CycleDataStageWriter<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
INLINE void operator = (CycleDataStageWriter<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE ~CycleDataStageWriter();
|
INLINE ~CycleDataStageWriter();
|
||||||
|
|
||||||
INLINE CycleDataType *operator -> ();
|
INLINE CycleDataType *operator -> ();
|
||||||
|
@ -122,7 +122,7 @@ template<class CycleDataType>
|
|||||||
INLINE CycleDataWriter<CycleDataType>::
|
INLINE CycleDataWriter<CycleDataType>::
|
||||||
CycleDataWriter(PipelineCycler<CycleDataType> &cycler,
|
CycleDataWriter(PipelineCycler<CycleDataType> &cycler,
|
||||||
CycleDataLockedReader<CycleDataType> &take_from,
|
CycleDataLockedReader<CycleDataType> &take_from,
|
||||||
bool force_to_0) :
|
bool force_to_0) :
|
||||||
_cycler(&cycler),
|
_cycler(&cycler),
|
||||||
_current_thread(take_from.get_current_thread())
|
_current_thread(take_from.get_current_thread())
|
||||||
{
|
{
|
||||||
@ -130,6 +130,36 @@ CycleDataWriter(PipelineCycler<CycleDataType> &cycler,
|
|||||||
force_to_0, _current_thread);
|
force_to_0, _current_thread);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_MOVE_SEMANTICS
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE CycleDataWriter<CycleDataType>::
|
||||||
|
CycleDataWriter(CycleDataWriter<CycleDataType> &&from) NOEXCEPT :
|
||||||
|
_cycler(from._cycler),
|
||||||
|
_current_thread(from._current_thread),
|
||||||
|
_pointer(from._pointer)
|
||||||
|
{
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
template<class CycleDataType>
|
||||||
|
INLINE void CycleDataWriter<CycleDataType>::
|
||||||
|
operator = (CycleDataWriter<CycleDataType> &&from) NOEXCEPT {
|
||||||
|
nassertv(_pointer == (CycleDataType *)NULL);
|
||||||
|
nassertv(_current_thread == from._current_thread);
|
||||||
|
|
||||||
|
_cycler = from._cycler;
|
||||||
|
_pointer = from._pointer;
|
||||||
|
|
||||||
|
from._pointer = NULL;
|
||||||
|
}
|
||||||
|
#endif // USE_MOVE_SEMANTICS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -49,6 +49,11 @@ public:
|
|||||||
INLINE CycleDataWriter(PipelineCycler<CycleDataType> &cycler, CycleDataLockedReader<CycleDataType> &take_from);
|
INLINE CycleDataWriter(PipelineCycler<CycleDataType> &cycler, CycleDataLockedReader<CycleDataType> &take_from);
|
||||||
INLINE CycleDataWriter(PipelineCycler<CycleDataType> &cycler, CycleDataLockedReader<CycleDataType> &take_from, bool force_to_0);
|
INLINE CycleDataWriter(PipelineCycler<CycleDataType> &cycler, CycleDataLockedReader<CycleDataType> &take_from, bool force_to_0);
|
||||||
|
|
||||||
|
#if defined(USE_MOVE_SEMANTICS) && defined(DO_PIPELINING)
|
||||||
|
INLINE CycleDataWriter(CycleDataWriter<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
INLINE void operator = (CycleDataWriter<CycleDataType> &&from) NOEXCEPT;
|
||||||
|
#endif
|
||||||
|
|
||||||
INLINE ~CycleDataWriter();
|
INLINE ~CycleDataWriter();
|
||||||
|
|
||||||
INLINE CycleDataType *operator -> ();
|
INLINE CycleDataType *operator -> ();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user