mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -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);
|
||||
}
|
||||
|
||||
#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 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 const CycleDataType *operator -> () const;
|
||||
|
@ -64,6 +64,38 @@ operator = (const CycleDataLockedStageReader<CycleDataType> ©) {
|
||||
_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 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 const CycleDataType *operator -> () const;
|
||||
|
@ -114,6 +114,38 @@ CycleDataStageWriter(PipelineCycler<CycleDataType> &cycler, int stage,
|
||||
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,
|
||||
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 CycleDataType *operator -> ();
|
||||
|
@ -130,6 +130,36 @@ CycleDataWriter(PipelineCycler<CycleDataType> &cycler,
|
||||
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, 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 CycleDataType *operator -> ();
|
||||
|
Loading…
x
Reference in New Issue
Block a user