21 #ifndef __XN_THREAD_SAFE_QUEUE_H__ 22 #define __XN_THREAD_SAFE_QUEUE_H__ 92 mutable XN_CRITICAL_SECTION_HANDLE m_hLock;
100 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator) \ 101 class decl ClassName : public XnThreadSafeQueue \ 108 while (Size() != 0) \ 111 XnStatus Push(Type const& value) \ 113 XnValue val = Translator::CreateValueCopy(value); \ 114 XnStatus nRetVal = XnThreadSafeQueue::Push(val); \ 115 if (nRetVal != XN_STATUS_OK) \ 117 Translator::FreeValue(val); \ 120 return XN_STATUS_OK; \ 122 XnStatus Pop(Type& value) \ 125 XnStatus nRetVal = XnThreadSafeQueue::Pop(val); \ 126 if (nRetVal != XN_STATUS_OK) return (nRetVal); \ 127 value = Translator::GetFromValue(val); \ 128 Translator::FreeValue(val); \ 129 return XN_STATUS_OK; \ 138 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR(Type, ClassName, Translator) \ 139 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator) 145 #define XN_DECLARE_THREAD_SAFE_QUEUE_DECL(decl, Type, ClassName) \ 146 XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \ 147 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) 152 #define XN_DECLARE_THREAD_SAFE_QUEUE(Type, ClassName) \ 153 XN_DECLARE_THREAD_SAFE_QUEUE_DECL(, Type, ClassName) 155 #endif //__XN_THREAD_SAFE_QUEUE_H__ #define XN_IS_STATUS_OK(x)
Definition: XnMacros.h:59
XnStatus Pop(XnValue &value)
Definition: XnThreadSafeQueue.h:69
~XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:41
#define XN_STATUS_OK
Definition: XnStatus.h:36
virtual XnStatus Pop(XnValue &value)
Definition: XnQueue.h:78
XnUInt32 Size() const
Definition: XnThreadSafeQueue.h:82
virtual XnUInt32 Size() const
Definition: XnQueue.h:120
XnUInt32 XnStatus
Definition: XnStatus.h:33
virtual XnStatus Push(XnValue const &value)
Definition: XnQueue.h:62
XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:39
void * XnValue
Definition: XnDataTypes.h:35
XN_C_API XnStatus XN_C_DECL xnOSCloseCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XnStatus Init()
Definition: XnThreadSafeQueue.h:46
XnStatus Push(XnValue const &value)
Definition: XnThreadSafeQueue.h:56
XN_C_API XnStatus XN_C_DECL xnOSCreateCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
Definition: XnThreadSafeQueue.h:36
XN_C_API XnStatus XN_C_DECL xnOSEnterCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XN_C_API XnStatus XN_C_DECL xnOSLeaveCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)